通过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实现的检测web服务器健康状况的小程序
Sep 17 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
Python集合操作方法详解
Feb 09 Python
Python pip配置国内源的方法
Feb 14 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
Python中socket网络通信是干嘛的
May 27 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
Python爬虫之Spider类用法简单介绍
Aug 04 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
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python实现二叉树的遍历
2017/12/11 Python
Python简单实现控制电脑的方法
2018/01/22 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
军训心得体会
2013/12/31 职场文书
运动会通讯稿200字
2014/02/16 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
财务管理专业求职信
2014/06/11 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫