Форум сайта python.su
Уважаемые специалисты! Подскажите пожалуйста, как сделать ветку выбора в зависимости от вывода команды через 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)
Офлайн
Пробую сделать:
cli.send('pwd\n') prompt = '.*gor\s*' cli.expect(prompt)
Отредактировано ivanstr (Июль 19, 2024 14:23:43)
Офлайн
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)
Офлайн