通过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中copy()方法的使用
May 21 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
Python中logging日志库实例详解
Feb 19 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php实现的CSS更新类实例
2014/09/22 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
使用python实现链表操作
2018/01/26 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python得到单词模式的示例
2018/10/15 Python
python 生成器需注意的小问题
2020/09/29 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
公司活动总结范文
2014/07/01 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
教师职位说明书
2014/07/29 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
Python os和os.path模块详情
2022/04/02 Python
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis