exscript ssh на python

Имам проблем с 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
Извинения за късния отговор. Само модулът Хост и акаунт трябваше да бъде импортиран. - person skd; 07.03.2015