Найти - Пользователи
Полная версия: paramiko действие в зависимости от вывода команды
Начало » Python для новичков » paramiko действие в зависимости от вывода команды
1
ivanstr
Уважаемые специалисты! Подскажите пожалуйста, как сделать ветку выбора в зависимости от вывода команды через paramiko:

 import paramiko
import os
import time
hostname = "*******"
response = os.system("ping -c 1 " + hostname)
if response == 0:
    #pingstatus = "Network Active"
    print("Up")
else:
    #pingstatus = "Network Error"
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('*****', username='*****', password='******')
    cli = ssh.invoke_shell() 
    cli.send('pwd\n') #отправляем одну команду
----------------------------------------------------------------------------------------------------------------------------
Например, если выведет /home/user -- выполнить одну команду,
а если выведет /root -- выполнить другую в ssh [cli.send('команда)] :(
--------------------------------------------------------------------------------------------------------------------------------
    time.sleep(3)
    cli.send('pwd\n') 
    time.sleep(3) 
    dis_cu = cli.recv(9999999).decode() 
    print(dis_cu) 
    ssh.close()
    
    print("Down")
Подскажите пожалуйста!
ivanstr
Пробую сделать:
 cli.send('pwd\n')
prompt = '.*gor\s*'
cli.expect(prompt)

Но почему-то выдает ошибку:

cli.expect(prompt)
AttributeError: ‘Channel’ object has no attribute ‘expect’
ivanstr
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname=host, username=user, password=secret, port=port)
    channel = client.invoke_shell()
    channel.send('pwd\n')
    time.sleep(3)
    dis_cu = channel.recv(1024).decode("utf-8") 
    print(dis_cu)
    if 50 < len(dis_cu) < 100 :
        print('if')
    elif 100 < len(dis_cu) < 500:
        print('elif')
        channel.send('ls\n')
        time.sleep(3)
        dis_cu = channel.recv(1024).decode("utf-8") 
        print(dis_cu)
    elif len(dis_cu) == 200:
        print('elif2')
    else:
        print('else')
    
    channel.close()
    client.close()
#Ничего не вышло - сделал через ст.вывод:
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB