文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 执行 shell命令 的几

2023-01-31 02:37

关注

 

 

os.system

最近有个需求就是页面上执行shell命令,第一想到的就是os.system


os.system('cat /proc/cpuinfo')

但是发现页面上打印的命令执行结果 0 或者 1,当然不满足需求了。

 

os.popen()

尝试第二种方案 os.popen()


output = os.popen('cat /proc/cpuinfo')
print output.read()

通过os.popen()返回的是 file read 的对象,对其进行读取 read() 操作可以看到执行的输出。但是无法读取程序执行的返回值。

 

commands.getstatusoutput()

尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。


(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output

 

Python Document 中给的一个例子,


>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

python commands 模块在 python3.x 被 subprocess 取代

https://blog.csdn.net/ronnyjiang/article/details/53333538

 

 

 

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,

值得一说的是,fabric ansible 内部的远程管理就是使用的paramiko来现实。

《Python自动化运维技术与最佳实践》

 

下载安装

由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto


pip3 install pycrypto
pip3 install paramiko

使用示例:


import paramiko

if __name__ == '__main__':

    ip = '172.28.11.132' 
    port = 22           
    user_name = "root"  
    user_password = r'123456' 
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(ip, port, user_name, user_password)
    cmd = 'ls /'
    stdin, stdout, stderr = ssh.exec_command(cmd)
    print stdout.readlines()

 

模块使用

 

执行命令,用户名+密码


#!/usr/bin/env python3
#执行命令,用户名+密码

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.101.2', 22, "root", '111111')
stdin, stdout, stderr = ssh.exec_command('df')

print(stdout.read())
ssh.close()

执行命令:python3 paramiko_test01.py 

 

执行命令,密钥


#!/usr/bin/env python3
#执行命令,密钥

import paramiko
private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.101.2', 22, 'root', '111111')

stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
ssh.close()

 

上传或下载文件,用户名+密码


#!/sur/bin/env python3
#上传或下载文件,用户名+密码

import paramiko
import os,sys

t = paramiko.Transport(('192.168.101.2', 22))
t.connect(username='root',password='111111')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py') #第一个参数是本地上传的文件,第二个参数>时上传后目标机器保存的文件
t.close()

 

下载或上传文件,密钥


#!/usr/bin/env python3
#下载或上传文件,密钥

import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from+private_key_file(pravie_key_path)

t = paramiko.Transport(('192.168.101.2', 22))
t.connect(username='root',pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test2.py', '/tmp/test2.py')

t.close()

 

 

 

 

 

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯