专栏名称: python实战
Python实战
目录
相关文章推荐
Python爱好者社区  ·  中国四大软件外包公司 ·  昨天  
Python爱好者社区  ·  太强了!800个python案例.pdf ·  3 天前  
Python爱好者社区  ·  75k,确实可以封神了! ·  5 天前  
Python开发者  ·  裁掉数千人、把工作外包给 ... ·  1 周前  
Python爱好者社区  ·  1885页Python电子书 ·  1 周前  
51好读  ›  专栏  ›  python实战

【重磅推荐】一个简单的远程登录脚本

python实战  · 公众号  · Python  · 2016-12-26 21:47

正文




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



请你们帮个忙啊,要是觉得文章不错的话可以转载到朋友圈,就是邀请你们的同学和朋友,或者学习和想学习的人来阅读观看。


更多学习资料+群:330637182   群里有各种学习资料免费共享-