博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用pexpect和连接ssh交互
阅读量:6001 次
发布时间:2019-06-20

本文共 1269 字,大约阅读时间需要 4 分钟。

hot3.png

pip install pexpect

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 自动交互ssh不能在子进程中执行"""from collections import OrderedDictimport pexpectimport sys# HOSTS {'关键字1:关键字2...': [user, ip, port] }HOSTS = OrderedDict({    '1:45:loc': ['192.168.1.64', 22, 'root', '123456'],})def list_host():    for k, v in HOSTS.iteritems():        print '%s==>%s' % (k, v[0])def fuzzy_get(key):    for _key in HOSTS:        if key in _key:            return HOSTS[_key]def ssh_cmd(host, port, user, password):    try:        child = pexpect.spawn('ssh -p %s %s@%s' % (port, user, host))        i = child.expect(['password: ', 'continue connecting (yes/no)?'], timeout=10)        if i == 0:            child.sendline(password)        elif i == 1:            child.sendline('yes\n')            child.expect('password: ')            child.sendline(password)        else:            sys.exit('Login failed!')        print 'Login Success! (Ctrl-D Exit)'        child.interact()    except Exception as e:        sys.exit(str(e))if __name__ == '__main__':    print 'All Servers:'    list_host()    key = raw_input('Please choice a server to connect (`:` split):')    host, port, user, password = fuzzy_get(key)    ssh_cmd(host, port, user, password)

转载于:https://my.oschina.net/1123581321/blog/401296

你可能感兴趣的文章
linux:sed高级命令之n、N(转)
查看>>
mass Framework class模块v12
查看>>
Android错误-error: Found text " " where item tag is expected
查看>>
PHP语言中global和$GLOBALS[]的分析 之二
查看>>
dom 的添加或事件绑定
查看>>
Basic Oracle For Developer & Beginner
查看>>
oracle 自带函数大全及例子
查看>>
Android WebView 问题总集
查看>>
alert()、confirm()和prompt()的区别与用法
查看>>
如何用批处理文件写:获取当前日期的前一天
查看>>
head first java ( 16章 )
查看>>
分享:python-bitstring 3.1.2 发布
查看>>
.NET编译器中CLR加载过程
查看>>
vi10
查看>>
(译)ECMAScript 5 Objects and Properties (一)
查看>>
世界500强高频逻辑推理智力面试题(二)
查看>>
Android之ListView中的分割线
查看>>
高仿114la网址导航源码完整最新版
查看>>
C# Socket编程(4)初识Socket和数据流
查看>>
Yii 控制dropdownlist / select 控件的宽度和 option 的宽度
查看>>