#!/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命令行的更多相关文章

  1. SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题

    一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...

  2. 两本最近阅读的工具书的记录 关于Python和Linux命令行的 不喜勿喷 只是写给自己用

    <Linux命令行完全技术宝典>读书心得 张栋作者 在学习Linux系统中,我们需要掌握各种管理的方法和技巧,而管理Linux系统最有效的方法就是命令行的控制.而我在图书馆中读到的< ...

  3. Python解析Linux命令行

    写了个python脚本在linux需要传入参数使用,python参数传入有几个方法, 先用了Python中命令行参数的最传统的方法sys.argv linux cmd ~& python ma ...

  4. python生成linux命令行工具

    您是否也曾一直想生成类似cd, cat等小巧/迷人/实用的小工具作为系统命令或者将python程序打包为exe进行分发?ok,机会来了.利用python 的argparse 和 pyinstaller ...

  5. 重学Python - Day 07 - python基础 -> linux命令行学习 -- 常用命令 一

    常用命令和使用方法如下: man man 命令 #可以查询命令的用法 cat 和 tac cat是正序显示文件内容 tac是倒叙显示文件内容 sort 对文件内容排序 uniq 忽略文件中重复行 hi ...

  6. 重学Python - Day 06 - python基础 -> linux命令行学习 -- 简单基础命令学习

    学习资源 虚拟机工具:VMWare 12 linux :Ubuntu 14 或者CentOS 6 PS:ubuntu用远程连接工具的设置方法 step 1: 输入sudo apt-get instal ...

  7. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  8. Linux命令行技巧

    Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...

  9. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

随机推荐

  1. C# Aspose.Cells 如何设置单元格样式

    //Instantiating a Workbook object Workbook workbook = new Workbook(); //Adding a new worksheet to th ...

  2. Mongodb4.0副本集构建

    目前最新的mongodb4.0.2已经支持事务这个重要特性,需要使用的话必须是复制或副本集,这是第一篇先研发如何构建副本集,因为副本集是目前最低成本的高可用群集方式. 1.准备三台服务器,本次使用是的 ...

  3. ZJOI2019Day2 游记

    原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day2 游记 4-23 乘车. 报到. 自闭. 晚上没睡好. 4-24 上午张哲宇讲课. 幕后点人上去讲题. 然 ...

  4. 修改 salt-minion 的 ID 后报错解决方法

    当在搭建 Saltstack 集中化管理平台配置完毕时,启动服务时,不知道是否你也越到过如下报错的现象呢? 报错问题如下: [root@saltstack_web1group_1 ~]# vim /e ...

  5. 安装es6编译babel

    1.它的安装命令如下. 全局安装 :$ npm install --global babel-cli项目下安装: $ npm install -g babel-cli --save-dev 2.配置. ...

  6. 数据分析——matplotlib

    基础 # coding=utf-8 import matplotlib.pyplot as pt import numpy as np from matplotlib import font_mana ...

  7. HTML入门11

    在网页中添加矢量图形, 使用矢量图形在很多情况下,效果较好,拥有较小的文件尺寸,高度缩放,下面具体讲解如何在网页中添加矢量图形 位图和矢量图 位图文件包含了每个像素的位置和色彩信息,流行的位图格式包括 ...

  8. 从C过渡到C++的几个知识点(结构体、引用、重载运算符)

    一.结构体和类(class) 下面一个使用结构体类型的例子 #include <iostream> using namespace std; struct Point{ // 声明Poin ...

  9. vim 常用指令

    其他命令 <c-L> 重绘屏幕 <c-z> 挂起vim回到shell,想继续vim只需要输入 fg <c-x-f> 文件路径提示 <c-N> 当前文件中 ...

  10. 解析jsonObject,赋给指定的对象

    从JSONObject中解析数据,并赋给给定的对象 public static Object parseBean(JSONObject jsonObject, Object obj) {   if ( ...