通过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标准库os.path包、glob包使用实例
Nov 25 Python
python实现2048小游戏
Mar 30 Python
python获取元素在数组中索引号的方法
Jul 15 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
Python+Django搭建自己的blog网站
Mar 13 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
python和C++共享内存传输图像的示例
Oct 27 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
使用Pytorch训练two-head网络的操作
May 28 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
JS模拟键盘打字效果的方法
2015/08/05 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python与Redis的连接教程
2015/04/22 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
前厅收银主管岗位职责
2014/02/04 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
建筑安全责任书范本
2014/07/24 职场文书
贷款委托书
2014/08/01 职场文书
2014年民政工作总结
2014/11/26 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
2016十一国庆节感言
2015/12/09 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
MySQL数据库简介与基本操作
2022/05/30 MySQL
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android