python连接Linux命令行
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''https://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/index.html'''
import pexpect
import types
username = "root"
ip = "192.168.***.***"
password = "****"
pex = pexpect.spawn('ssh %s@%s' % (username, ip))
def _check(pattern, timeout=120):
i = pex.expect(pattern, timeout=timeout)
return i
def sendcr(cmd):
if pex == None:
return 0
n = pex.send("%s\r" % cmd)
return n
def getexec(cmd):
child = pexpect.spawn(cmd)
child.expect(pexpect.EOF)
return child.before
if __name__ == '__main__':
checklist1 = [["(?i)Connection refused", False],
["(?i)Host key verification failed.", False],
["(?i)VENUSTECH AUDIT SYSTEM MA1000", True],
# ["(?i)#\[/]",True], # hpux
["(?i).+>", True], # windows
[".+[>$#]\s*$", True], # debian
["(?i)Last login", True],
["(?i)access denied", False],
["(?i)NT_STATUS_LOGON_FAILURE", False],
["(?i)are you sure you want to continue connecting", "yes"],
["(?i)authentication fail(?!ure)", False],
["(?i)connection closed by remote host", False],
["(?i)login failed", False],
["(?i)login incorrect", False],
["(?i)need to be root", False],
["(?i)no route to host", False],
["(?i)not found", False],
["(?i)Bad secrets", False],
["(?i)incorrect password", False],
["(?i)permission denied", False],
# ["(?i)terminal type",terminal_type],
["This private key will be ignored.", False],
["(?i)no route to host", False],
["(?i)press 'Enter' key to proceed", "\r"],
["(?i)Y/N", 'Y'],
[pexpect.EOF, False],
[pexpect.TIMEOUT, False],
["(?i)Enter passphrase for key .*:", password],
["(?i)assword", password],
["(?i)passwd", password],
["(?i)sername", username],
["(?i)(?<!sful )login", username],
["(?i)----------------------------------------------------------------", True]]
checklist2 = [i[0] for i in checklist1]
while True:
i = _check(checklist2)
print i, checklist1[i], checklist1[i][1]
if (type(checklist1[i][1]) is types.BooleanType):
if type(checklist1[i][1]):
break
else:
sendcr(checklist1[i][1])
cmd = "ls -l /etc/rsyslog.conf"
result = getexec(cmd)
print "result", result
打印结果:
26 ['(?i)assword', '***'] ***
5 ['(?i)Last login', True] True
result -rw-r--r--. 1 root root 3167 Mar 13 11:24 /etc/rsyslog.conf
python连接Linux命令行的更多相关文章
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...
- 两本最近阅读的工具书的记录 关于Python和Linux命令行的 不喜勿喷 只是写给自己用
<Linux命令行完全技术宝典>读书心得 张栋作者 在学习Linux系统中,我们需要掌握各种管理的方法和技巧,而管理Linux系统最有效的方法就是命令行的控制.而我在图书馆中读到的< ...
- Python解析Linux命令行
写了个python脚本在linux需要传入参数使用,python参数传入有几个方法, 先用了Python中命令行参数的最传统的方法sys.argv linux cmd ~& python ma ...
- python生成linux命令行工具
您是否也曾一直想生成类似cd, cat等小巧/迷人/实用的小工具作为系统命令或者将python程序打包为exe进行分发?ok,机会来了.利用python 的argparse 和 pyinstaller ...
- 重学Python - Day 07 - python基础 -> linux命令行学习 -- 常用命令 一
常用命令和使用方法如下: man man 命令 #可以查询命令的用法 cat 和 tac cat是正序显示文件内容 tac是倒叙显示文件内容 sort 对文件内容排序 uniq 忽略文件中重复行 hi ...
- 重学Python - Day 06 - python基础 -> linux命令行学习 -- 简单基础命令学习
学习资源 虚拟机工具:VMWare 12 linux :Ubuntu 14 或者CentOS 6 PS:ubuntu用远程连接工具的设置方法 step 1: 输入sudo apt-get instal ...
- 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器
12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...
- Linux命令行技巧
Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...
- SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
随机推荐
- Oracle-分析函数之sum(...) over(...)
概述 Oracle函数 很久之前更新了一篇Oracle的函数博文http://blog.csdn.net/yangshangwei/article/details/51425458,分析函数并没有包括 ...
- Codeforces 1015F Bracket Substring AC自动机 + dp
Bracket Substring 这么垃圾的题怎么以前都不会写啊, 现在一眼怎么就会啊.... 考虑dp[ i ][ j ][ k ][ op ] 表示 已经填了 i 个空格, 末尾串匹配到 所给串 ...
- kafka原理和架构
转载自: https://blog.csdn.net/lp284558195/article/details/80297208 参考: https://blog.csdn.net/qq_2059 ...
- sql查询单表之中大于2条的数据
SELECT COUNT(字段)AS COUNT,字段FROM 表名 GROUP BY 字段 HAVING COUNT >=
- 感动到哭的SBT下载
在centos上搭建spark开发环境.使用IntelliJ IDEA做scala开发,需要配置SBT.一直卡在从maven上下载jar包的过程中,还几次都下失败了.试过vpn也没有用. 还好偶然看到 ...
- 第六章 对象-javaScript权威指南第六版(三)
6.3 删除内容 delete运算符可以删除对象的属性. delete运算符只能删除自有属性,不能删除继承属性. delete表达式删除成功或没有任何副作用时,它返回true. 6.4 检测属性 用i ...
- user-agent | what is the "user-agent" ?
User Agent(用户代理) UA是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等 通过抓包可以得到 下面是几个 ...
- Textarea设置自动高度
$.fn.extend({ autoHeight: function() { return this.each(function() { var $this = jQuery(this); if(!$ ...
- Could not load file or assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
提示哪个引用修改哪个引用的属性: Could not load file or assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, ...
- Summer Project
Summer Project Summer是一个用于学习交流,基于Netty4.x的简单mvc库. 使用 快速开始 public class Application { public static v ...