通过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随机生成彩票号码的方法
Mar 05 Python
python字典get()方法用法分析
Apr 17 Python
Python实现程序的单一实例用法分析
Jun 03 Python
python3设计模式之简单工厂模式
Oct 17 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
关于python字符串方法分类详解
Aug 20 Python
解析Python3中的Import
Oct 13 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
Python代码中如何读取键盘录入的值
May 27 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
开始着手第一个Django项目
2015/07/15 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python实发邮件实例详解
2019/11/11 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
广告学专业毕业生自荐信
2013/09/24 职场文书
工程部主管岗位职责
2013/11/17 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
见习期自我鉴定
2014/01/31 职场文书
法人委托书
2014/07/31 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
市场部经理岗位职责
2015/02/02 职场文书
复兴之路观后感
2015/06/02 职场文书
MySQL transaction事务安全示例讲解
2022/06/21 MySQL