import paramiko
import time
import os
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server',port=22,username='user',password='pass123')
print("connected to the linux machine from windows machine.")
channel=ssh.invoke_shell()
channel_data = str()
while True:
if channel.recv_ready():
channel_data += channel.recv(9999).decode(encoding='utf_8', errors='strict')
os.system('cls')
print("##### Device Output #####")
print("\n",channel_data)
print("\n #####################")
else:
continue
time.sleep(5)
if channel_data.endswith('[[email protected] ~]#'):
#if block statements are not executed why
print("Hi,why not executing this statement")
ssh.send('cd /\n')
#stdin,stdout,stderr=ssh.exec_command('pwd')
#output1=stdout.readlines()
print("My present working directory is")
elif channel_data.endswith('[[email protected] /]#'):
#Also elif block statements are not executed why
ssh.send('mkdir BB444')
#stdin,stdout,stderr=ssh.exec_command('mkdir /pn444')
#output1=stdout.readlines()
print("created pn444 directory")
Я использую paramiko для подключения ssh. Я могу войти в Linux-машину. то я проверяю условие, то есть, если channel_data.endswith ('[root @ home ~] #'), тогда отправьте команду «cd /» else, если channel_data.endswith ('[root @ home /] #'), затем отправьте 'mkdir BB444 ', но этот скрипт не отправляет эти команды. после отладки я вижу, что эти команды отправки команд не выполняются. Пожалуйста, дайте мне знать, какую ошибку я делаю здесь.Python скрипт не отправляет команды linux. я использовал Paramiko для удаленного подключения SSH
Я использую Python 3.6, paramiko 2.1.1
Обычно приглашение заканчивается в пространстве. Может быть, 'endswith ('[root @ home /] #')'? Или '' [root @ home ~] # ''. –
Спасибо, Гириша. Ваше предложение решило проблему. –
Привет, Гириша, я столкнулся с подобной проблемой в другом случае. Во время взаимодействия с командой, когда вывод идет со строкой «Хотите настроить сеть сейчас? (да/нет) [по умолчанию да] ', скрипту необходимо отправить команду «да». Ниже приведен код, написанный для этого. channel.send ('yes \ n') не выполняется. elif channel_data.endswith ('Вы хотите настроить Prime Network сейчас? (да/нет) [по умолчанию да]'): channel.send ('yes \ n') –