一個(gè)簡(jiǎn)單的遠(yuǎn)程登錄腳本
import pexpect #Pexpect 是一個(gè)用來啟動(dòng)子程序并對(duì)其進(jìn)行自動(dòng)控制的純 Python 模塊 我們通過它來調(diào)用ssh來實(shí)現(xiàn)遠(yuǎn)程登錄
import struct
import fcntl
import sys
#下面`get_size`模塊是更改`pexpect`模擬的窗口大小,有的時(shí)候`pexpect`模擬的窗口會(huì)很小導(dǎo)致用起來很不方便 我們這邊給他賦值
try:
import termios
import tty
except ImportError:
print '\033[1;31mOnly UnixLike supported.\033[0m'
time.sleep(3)
sys.exit()
def get_size():
if 'TIOCGWINSZ' in dir(termios):
TIOCGWINSZ = termios.TIOCGWINSZ
else:
TIOCGWINSZ = 1074295912L
s = struct.pack('HHHH', 0, 0, 0, 0)
x = fcntl.ioctl(sys.stdout.fileno(), TIOCGWINSZ, s)
return struct.unpack('HHHH', x)[0:2]
#connet方法是我們實(shí)現(xiàn)遠(yuǎn)程登錄的方法 調(diào)用`pexpect.spawn `來調(diào)用`shell`命令
`def connet(username,password,host,port)`: #傳入四個(gè)參數(shù) 第一個(gè)用戶名,第二個(gè)密碼,主機(jī)IP,主機(jī)端口
username=username
password=password
ip=host
port=port
try:
foo = pexpect.spawn('/usr/bin/ssh -q -o StrictHostKeyChecking=no %s@%s -p%s' % (username,ip,port)) #StrictHostKeyChecking=no 這個(gè)命令的意思是第一次登錄的時(shí)候不輸入yes
foo.expect('.*ssword:') #捕捉ssword字符串如果捕捉到了就sendline 密碼
foo.sendline(password) #發(fā)送password密碼
size = get_size() #調(diào)用get_size方法來獲取窗口大小
foo.setwinsize(size[0], size[1])
foo.interact()
except pexpect.EOF:
print 'connect ssh socket prot error,please correct is'
except pexpect.TIMEOUT:
print 'Connect SSH TIMEOUT, Please Correct it.'
username=raw_input('輸入用戶名')
password=raw_input('輸入密碼')
host=raw_input('輸入主機(jī)IP')
port=raw_input('輸入主機(jī)端口')
try:
connet(username,password,host,port) #調(diào)用conet方法并傳入四個(gè)參數(shù)
except Exception,e:
print e
如果您對(duì)Python和爬蟲相關(guān)知識(shí)有興趣,可以加群482869582與大神們共同探討和學(xué)習(xí)哦!