Просто используя мой первый скрипт paramiko, у нас есть консольный консольный сервер, поэтому я пытаюсь автоматизировать настройку любого устройства, которое мы подключаем к нему.Paramiko - ssh на консольный сервер, нужно нажать return для продолжения скрипта
Открытое устройство прослушивает соединения ssh на портах, например, устройство в порту 1 будет 3001. Я подключаюсь к устройству на порту 8, которое работает, и мой скрипт работает, но по какой-то причине после получения сообщение «Interactive SSH session установлено», мне нужно нажать return на сеансе, чтобы он запустился (поэтому у меня есть сеанс ssh, и скрипт тоже, его общий).
Он просто ждет там до тех пор, пока я не вернусь, я попытался отправить возвращения, как вы можете видеть, но они не работают, работает только ручное возвращение, что странно, потому что технически они одно и то же?
import paramiko
import time
def disable_paging(remote_conn):
'''Disable paging on a Cisco router'''
remote_conn.send("terminal length 0\n")
time.sleep(1)
# Clear the buffer on the screen
output = remote_conn.recv(1000)
return output
if __name__ == '__main__':
# VARIABLES THAT NEED CHANGED
ip = '192.168.1.10'
username = 'root'
password = 'XXXXXX'
port = 3008
# Create instance of SSHClient object
remote_conn_pre = paramiko.SSHClient()
# Automatically add untrusted hosts (make sure okay for security policy in your environment)
remote_conn_pre.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
# initiate SSH connection
remote_conn_pre.connect(ip, username=username, password=password,port=port, look_for_keys=False, allow_agent=False)
print "SSH connection established to %s" % ip
# Use invoke_shell to establish an 'interactive session'
remote_conn = remote_conn_pre.invoke_shell()
print "Interactive SSH session established"
time.sleep(1)
remote_conn.send("\n")
# Strip the initial router prompt
#output = remote_conn.recv(1000)
# See what we have
#print output
# Turn off paging
#disable_paging(remote_conn)
# clear any config sessions
is_global = remote_conn.recv(1024)
if ")#" in is_global:
remote_conn.send("end\n")
time.sleep(2)
# if not in enable mode go to enable mode
is_enable = remote_conn.recv(1024)
if ">" in is_enable:
remote_conn.send("enable\n")
time.sleep(1)
remote_conn.send("conf t\n")
remote_conn.send("int g0/0/1\n")
remote_conn.send("ip address 192.168.1.21 255.255.255.0\n")
remote_conn.send("no shut\n")
remote_conn.send("end\n")
# Wait for the command to complete
time.sleep(2)
remote_conn.send("ping 192.168.1.1\n")
time.sleep(1)
output = remote_conn.recv(5000)
print output
протоколирование не определено. мне нужно что-то добавить? Кроме того, ive ntoiced, что первый возврат carrige работает, я смотрю консоль и вижу ее, затем она делает паузу, пока я не ударил еще раз, после чего запускается сценарий. – AlexW
Я добавил оператор импорта. –
Для регистратора «paramiko.transport» не найдено никаких обработчиков, – AlexW