Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2024 15:34:30

ivanstr
Зарегистрирован: 2024-07-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

paramiko действие в зависимости от вывода команды

Уважаемые специалисты! Подскажите пожалуйста, как сделать ветку выбора в зависимости от вывода команды через 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 (Июль 19, 2024 14:27:01)

Офлайн

#2 Июль 19, 2024 10:36:29

ivanstr
Зарегистрирован: 2024-07-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

paramiko действие в зависимости от вывода команды

Пробую сделать:

 cli.send('pwd\n')
prompt = '.*gor\s*'
cli.expect(prompt)

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

cli.expect(prompt)
AttributeError: ‘Channel’ object has no attribute ‘expect’

Отредактировано ivanstr (Июль 19, 2024 14:23:43)

Офлайн

#3 Июль 19, 2024 14:19:01

ivanstr
Зарегистрирован: 2024-07-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

paramiko действие в зависимости от вывода команды

    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()
#Ничего не вышло - сделал через ст.вывод:

Отредактировано ivanstr (Июль 19, 2024 14:26:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version