一个简单的远程登录脚本

一个简单的远程登录脚本

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,237评论 25 708
  • 在一切还没有解释之前,我想我唯一能做的,就是把所看到的画下来,这或许就是上帝给了我一双能够看到一些特别事物的眼睛的...
    幽兰达人阅读 159评论 0 0
  • 上周遇到了一个黑莓手机浏览器兼容性问题,A按钮点击无反应,没有触发任何事件。这块的代码一直没有修改过,不知道是怎么...
    hello_water阅读 5,698评论 0 1