通过python连接Linux命令行代码实例


Posted in Python onFebruary 18, 2020

这篇文章主要介绍了通过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 相关文章推荐
Python实现统计单词出现的个数
May 28 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
如何使用python操作vmware
Jul 27 Python
python学生信息管理系统实现代码
Dec 17 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
keras K.function获取某层的输出操作
Jun 29 Python
python批量修改交换机密码的示例
Sep 22 Python
教你用python实现12306余票查询
Jun 30 Python
Python日志syslog使用原理详解
Feb 18 #Python
Pytorch中.new()的作用详解
Feb 18 #Python
Pytorch maxpool的ceil_mode用法
Feb 18 #Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 #Python
Python3的socket使用方法详解
Feb 18 #Python
Python批量启动多线程代码实例
Feb 18 #Python
基于pytorch padding=SAME的解决方式
Feb 18 #Python
You might like
来自phpguru得Php Cache类源码
2010/04/15 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python 深入理解yield
2008/09/06 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
终止劳动合同协议书
2014/04/14 职场文书
教师职位说明书
2014/07/29 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
二人合伙经营协议书
2014/09/13 职场文书
罚站检讨书
2015/01/29 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
总结python多进程multiprocessing的相关知识
2021/06/29 Python