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, но он не позволяет мне запускать несколько команд.


person Garush Arakelyan    schedule 11.07.2013    source источник


Ответы (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()
person robots.jpg    schedule 20.09.2013

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

При входе в систему с несколькими узлами вставьте определенные команды, чтобы подтвердить статус ссылок, и это должно быть задокументировано в файле «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()
person Haroon Butt    schedule 04.06.2017

person    schedule
comment
Хотя это может ответить на вопрос, лучше иметь некоторое объяснение того, какие изменения вы внесли и почему это работает/должно быть именно таким. - person Makyen♦; 25.12.2014
comment
Приносим извинения за поздний ответ. Нужно было импортировать только модуль Host and Account. - person skd; 07.03.2015