一个简单的远程登录脚本
import pexpect #Pexpect 是一个用来启动子程序并对其进行自动控制的纯 Python 模块 我们通过它来调用ssh来实现远程登录
import struct
import fcntl
import sys
#下面`get_size`模块是更改`pexpect`模拟的窗口大小,有的时候`pexpect`模拟的窗口会很小导致用起来很不方便 我们这边给他赋值
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方法是我们实现远程登录的方法 调用`pexpect.spawn `来调用`shell`命令
`def connet(username,password,host,port)`: #传入四个参数 第一个用户名,第二个密码,主机IP,主机端口
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 这个命令的意思是第一次登录的时候不输入yes
foo.expect('.*ssword:') #捕捉ssword字符串如果捕捉到了就sendline 密码
foo.sendline(password) #发送password密码
size = get_size() #调用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('输入主机IP')
port=raw_input('输入主机端口')
try:
connet(username,password,host,port) #调用conet方法并传入四个参数
except Exception,e:
print e
如果您对Python和爬虫相关知识有兴趣,可以加群482869582与大神们共同探讨和学习哦!