exscript ssh на питоне

У меня проблемы с exscript, я хочу ssh к моим коммутаторам cisco, но у меня возникли некоторые проблемы

Я написал 2 сценария,

с этим у меня нет никаких проблем, я могу изменить шлюз по умолчанию, просто запустив скрипт и введя имя пользователя и пароль:


from Exscript.util.interact import read_login
from Exscript.protocols import SSH2

account = read_login()
enter code here`conn = SSH2()
conn.connect('192.168.86.12')
conn.login(account)
conn.execute('conf t')
conn.execute('no ip default-gateway')
conn.execute('ip default-gateway 192.168.68.10')

print "Response was:", repr(conn.response)
conn.send('exit\r')
conn.close()

Но проблема здесь. Я хочу сделать это автоматически, я не хочу вводить пользователя и пароль вручную. Итак, я написал этот сценарий,


from Exscript.util.interact import read_login
from Exscript.protocols import SSH2

#account = read_login()
conn = SSH2()
conn.connect('192.168.86.12')
conn.login('user','password')
conn.execute('conf t')
conn.execute('no ip default-gateway')
conn.execute('ip default-gateway 192.168.68.10')

print "Response was:", repr(conn.response)
conn.send('exit\r')
conn.close()

Но это дает мне эту ошибку вывода..

Traceback (most recent call last):
File "nn.py", line 7, in <module>
conn.login('user','password')
File "/usr/local/lib/python2.7/dist-packages/Exscript-DEVELOPMENT-py2.7.egg/Exscript/protocols/Protocol.py", line 591, in login
with self._get_account(account) as account:
File "/usr/local/lib/python2.7/dist-packages/Exscript-DEVELOPMENT-py2.7.egg/Exscript/protocols/Protocol.py", line 567, in _get_account
account.__enter__()
AttributeError: 'str' object has no attribute '__enter__'

PS: я пробовал также с paramiko, но он не позволяет мне запускать несколько команд.

3 ответа

Функция входа в систему ожидает Exscript.Account объект. Загрузите ваше имя пользователя и пароль в Account и передать это в.

from Exscript.protocols import SSH2
from Exscript import Account

account = Account('user', 'password')
conn = SSH2()
conn.connect('192.168.86.12')
conn.login(account)
# ...
conn.close()

Я новичок в этом деле, и мне тяжело на моей работе, надеюсь, вы, ребята, поможете в этом.

В то время как вход в систему с несколькими узлами вставляет определенные команды для подтверждения статуса ссылок, и это должно быть документ в файле "txt" или "log" для подтверждения, которого я достиг до ниже

from Exscript.protocols import SSH2    
from Exscript.util.file import get_hosts_from_file    
from Exscript import Account

accounts = [Account('myuser', 'mypassword')]    
conn = SSH2()          
hosts = get_hosts_from_file('myhosts.txt') 

def do_something(job, host, conn):
    conn.execute('sh int description | i PE')

start(hosts, accounts, do_something)    
conn.send('exit\r')    
conn.close()
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
from Exscript import Host, Account

account1 = Account('uname','pwd')
conn = SSH2()
conn.connect('192.168.86.12')
conn.login(account1)
conn.execute('conf t')
conn.execute('no ip default-gateway')
conn.execute('ip default-gateway 192.168.68.10')

print "Response was:", repr(conn.response)
conn.send('exit\r')
conn.close()
Другие вопросы по тегам