2013-07-11 2 views
1

임은 exscript에 문제가, 난 내 시스코 스위치에 ssh를 원하지만 메신저 내가 어떤 문제가 그나마이 하나 둘 스크립트,exscript SSH를

을 쓴 몇 가지 문제

을 가지고,


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() 
0
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() 
+0

까지 도달 이 질문에 대답 할 수 있다면, 당신이 만든 변화가 무엇이고 왜 그것이 효과가 있고 왜 그렇게되어야하는지에 대한 설명을하는 것이 낫습니다. – Makyen

+0

늦게 답변에 사과드립니다. 가져올 필요가있는 호스트 및 계정 모듈. – skd

0

을 나는이 물건에 새로운 오전 내 직업에 힘든 시간을 많이 받고, 너희들이 도움이되기를 바랍니다. 다중 노드에 로그인 링크의 상태를 재확인하기 위해 특정 명령을 삽입하고 이것이 "TXT"파일의 문서 수 또는 "로그인"해야하지만

는 확인 의 파일 나는이 동안 아래

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()