一个简单的远程登录脚本

一个简单的远程登录脚本

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与大神们共同探讨和学习哦!

你可能感兴趣的:(一个简单的远程登录脚本)