首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 python 执行 shell 命令的几种常用方式

在使用 Python 编写自动化脚本的时候,难免会需要执行一些基本的 shell 命令,而 Python 执行 shell 命令的方式有好几种,如果根据需要选择最适合的方式显得非常重要,这篇文章就来总结和对比一下几种常见的...Python 运行 shell 命令的方式。...,必须将命令分解成列表传入才能执行,这个据说是为了安全起见所以默认是关闭字符串执行的,不过在工作中使用的时候当然都是用字符串的方式执行了。...总结 以上就是常见的 Python 执行 shell 命令的方法,当然,上述都是内置库,也有第三方库可以实现 shell 执行,但是并不建议使用,毕竟官方提供的内置库已经可以满足大部分场景。...我的建议是当执行的命令比较简单而且也不是经常调用的时候,可以直接使用 os.system(),而如果是需要把执行命令的方法写到函数中经常性的调用,则应该使用 subprocess.Popen() 这种更加高级的方法

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Paramiko远程操作Linux服务器

    本篇将介绍一个Python的第三方库Paramiko,使用Paramiko,我们可以在Python脚本中进行SSH连接Linux服务器并远程执行Linux命令。...使用cd命令进行目录切换时不生效 当使用Paramiko库远程执行命令时,cd命令无法直接切换目录,这是因为cd是一个shell内置命令,无法直接通过Paramiko执行,此时可以通过在执行命令时添加额外的命令前缀来模拟...PS:shell内置命令就是有bash shell自身提供的命令,而不是文件系统中的可执行脚本文件。...可以使用type命令来确定一个命令是否是内置命令: 二者的区别在于:内置命令执行速度快,内置命令是当前shell环境的一部分,就在当前进程内执行,减少了上下文切换;外部脚本文件执行速度慢,需要磁盘I/...通过类似的方法,可以模拟其他shell内置命令的行为,但并非所有的shell内置命令都能以这种方式执行,因为某些命令可能依赖于shell的上下文环境。

    32320

    Python建立ssh连接|paramiko实践

    之前写了一篇Python调用系统命令的六种方法,但是执行linux命令时,需要在本地运行,如果想远程执行命令,就要用到另一个库paramiko。...paramiko是python的第三方库,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,不仅可以远程执行shell命令,还可以实现服务器文件的上传、下载。...Python警告 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 使用实例 1...,比如实现一个类似xshell工具的功能,登录以后可以输入命令回车后就返回结果,具体实现逻辑如下: import paramiko import os import sys # 建立一个socket...() # 下面就可以执行你所有的操作 # 关闭通道 channel.close() # 关闭链接 trans.close() 这里有一个简单的paramiko方法封装,可以实现shell命令执行

    2.7K51

    python实现主机批量管理

    python中刚好提供了关于主机批量管理的模块,今天就让我们来看看如何利用python实现主机批量管理 python提供主机批量管理的模块主要有三个paramiko、fabric与pexpect,今天我们主要说的是...paramiko模块,paramiko模块是第三方模块 安装:pip install paramiko或者yum install python-paramiko如果都安装失败的话可以使用源码安装 源码包下载地址...()                         //关闭连接 上传、下载: get_put = paramiko.Transport((ip,port)) //服务器ip和端口(使用SFTP时使用...while True:         shell_comd = raw_input('请输入执行的命令: ')        #执行的命令         if shell_comd == 'script_exit...)   #执行命令                 stderr = stderr.read()      #命令正确执行的结果                 stdout = stdout.read

    1.4K20

    python模块-part2

    方式二: 下载源码 解压源码 进入目录 编译源码    python setup.py build 安装源码    python setup.py install 注:在使用源码安装时,需要使用到gcc...编译和python开发环境,所以,需要先执行: yum install gcc yum install python-devel 或 apt-get python-dev 安装成功后,模块会自动安装到...python setup.py install   # 进入python环境,导入paramiko检查是否安装成功 ii.使用模块 1....中mkdir dirname os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname...win->'nt'; Linux->'posix'os.system("bash command")  运行shell命令,直接显示 os.environ  获取系统环境变量 os.path.abspath

    54220

    SSH连接与自动化部署工具parami

    paramiko paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方法。可以实现远程命令执行,文件传输,中间SSH代理等功能,相对于Pexpect,封装层次更高。...send # cmds=['sudo su\n', 'cd /var/log\n', 'ls\n'] #利用send函数发送cmd到SSH server,添加'\n'做回车来执行shell命令。...注意不同的情况,如果执行完telnet命令后,telnet的换行符是\r\n # ssh=s.invoke_shell() #在SSH server端创建一个交互式的shell,且可以按自己的需求配置伪终端...env.path=' ' 定义在run/sudo/local使用的$PATH环境变量 env.command_timeout=None env.timeout=10 env.shell=“/bin/bash...示例-Fabric部署Flask应用 示例1:它可以把当前的源代码上传至服务器,并安装到一个预先存在 的 virtual 环境: from fabric.api import * # 使用远程命令的用户名

    1.3K10

    网络工程师就算没有真机,也可以在ensp模拟器上玩python编程自动化!

    一、安装Paramiko模块 同样,由于Paramiko也是第三模块,所以我们需要在电脑上安装一下。 在CMD,输入命令:pip3 install paramiko ? ?...然后进入python 解释器,输入:import paramiko 如果没有报错,就说明安装没问题啦! ? ok,接下来,我们来说搭个简单环境,以后再搭批量的。...往期推荐 Python安装教程(推荐一款不错的Python编辑器) import paramiko import time ip = "192.168.56.100" user = "along" pw..., ip) #连接成功后,调用invoke_shell()方法来唤醒shell,也就是华为系统命令行,同时把它赋值给command,方便后续调用。...command = ssh.invoke_shell() #向设备发送命令,需要执行的命令。

    92010

    安服仔偷懒必备技能之自动化主机检查脚本

    二、python实现 先确定下流程,大概的流程就是这四个: 连接服务器 上传脚本 执行脚本 回收数据 最重要的是先连接上去,不然想得再好都没用,连接的话我用是py的paramiko,功能挺强大的...,它自带了一个执行多条命令的功能,在一条命令后面使用“;”就可以把命令隔开,看成是两条命令了,例如: stdin, stdout, stderr = ssh.exec_command('cd tmp;ls...')(向右滑动,查看更多) 它就会先cd到tmp这个目录下面,然后执行ls命令,到这无法上传下载文件,无法跳转目录两个坑基本上就填上了,这里贴下完整的数据,表格的格式是IP,端口,用户名,密码。.../bin/expect这个解释器,而这两个是没办法直接引用到上面的,也就是一个shell脚本无法直接使用两个解释器。...EOF给结束掉,也就是将上面的代码包进来(向右滑动,查看更多) 这样直接把过滤文件的方式已经自动输入密码给完成了,其实如果想要实现那些自动上传脚本,执行这些也是能完成的,只要解决了两个解释器命令能够在同一个脚本里面执行

    62730

    网工Python之路之paramiko 模块实验(一)初来乍到

    本次实验只需要用到 Linux ,透明交换机SW(启动即可,无需配置)、LSW1(Python 第三方库 paramiko 要操控的设备。),其它 LSW未启动,后续实验再使用。...=False) # 开启交互式会话 command = ssh_client.invoke_shell() print ('已经成功登陆路由器' + ip) # 向路由器发出命令 command.send...带有decode("ascii")的效果 不带decode("ascii")的效果 再来看看@朱嘉盛大佬带来的华为实验: 平台工具: 实验平台:WIN10 使用工具:eNSP v1.3.00.100...本次实验只需要用到 PC ,透明交换机SW1(启动即可,无需配置)、LSW1(Python 第三方库 paramiko 要操控的设备。),其它 LSW未启动,后续实验再使用。...后续: 除了 Ensp 安装与使用,Python 安装与使用,第三方库 paramiko 安装与使用外,可能还有如下这些疑问,有需要则后续再交流(看本文有没人理睬我= =哈)。

    1.6K10

    利用Python Paramiko开发

    1.Paramiko模块下的demo.py程序     前面利用Python中的Paramiko模块可以进行SSH的连接,以及用来传送文件(SFTP),但是无论是哪一种方式,连接都是短暂的,并非是长连的...,即一次执行一个命令或上传与下载一个文件,显然效率是不如直接使用Linux shell下的ssh连接命令来进行连接。...的远程主机需要进行连接,使用远程主机的账户名为xpleaf,如下: xpleaf@xpleaf-machine:/mnt/hgfs/Python/day6/sorftwares/demp_test/paramiko...2.通过修改与demo.py相关的模块来达到堡垒主机监控的功能     堡垒主机可以监控运维人员在服务器上做的命令操作,这里要做的,只是可以监控运维人员在Linux服务器上执行命令的操作,下面先给出这个监控程序的示意图...(2)输入堡垒主机账号密码 ? (3)登陆成功并进入服务器连接列表选择界面 ? (4)选择连接相应服务器 ? (5)运维人员执行相关命令 ?

    1.1K10

    Python执行或远程执行shell命令

    最近想要实现通过脚本循环再Linux下运行shell命令,经过探索发现使用Python语言有几种解决方案,在此简单记录。...方案一:脚本本地执行命令 在Python中有两个库都可以实现运行shell命令的效果: import subprocess import os 使用方法也很简单: # subprocess 使用方法 subprocess.call...("ls") # 执行ls命令 # os 使用方法 # 使用system模块执行linux命令时,如果执行的命令没有返回值res的值是256 # 如果执行的命令有返回值且成功执行,返回值是0 res...SecureCRT脚本 该方法参见此前的博文:SecureCRT 下 Python 脚本编写 参考文献 Python学习总结 06 paramiko 远程执行命令:https://www.cnblogs.com...命令:https://blog.csdn.net/laiahu/article/details/6697930 python执行linux命令的三种方式:https://zhuanlan.zhihu.com

    7.3K20

    Python 模块之fabric

    Fabric提供了一套基本的执行本地和远程shell命令、上传和下载文件的操作,包括一些辅助函数,例如驱动正在运行的用户输入或者放弃执行。...Fabric是类似paramiko的一个库,是对paramiko的再次封装,所以比使用paramiko更简单。...使用pip来安装  yum install python-pip -y pip install fabric Fabric通过命令行工具fab来执行定义在fabfile.py中的任务,常用的配置和函数如下...   一个字典,设置主机名到规则组的映射 roles    一个全局的role列表 shell    默认是/bin/bash -1 -c 在执行run命令时,默认的shell环境 skip_bad_hosts...   默认false,为ture时,会导致fab跳过无法连接的主机 sudo_prefix    默认值"sudo -S -p '%(sudo_prompt)s' " % env 执行sudo命令时调用的

    1.1K10

    Python: 一周笔记

    微信截图_20170806152336.png 主要介绍几个用到的python模块的使用方法。 python 含有丰富的内置和第三方库,企图全部掌握并精通那是不可能的。...2. sys 主要完成的是对系统参数,输入输出的操作。 3. subprocess 主要完成的是执行shell 命令,得到输入输出错误信息等。...4. paramiko 主要完成的是登入远程服务器,执行shell命令,远程文件上传、下载操作。...一般你要登入远程服务器进行操作你会怎么做: ssh 登入远程服务器 执行命令 sftp get: 下载文件 sftp put: 上传文件 scp 上传下载文件 paramiko 就是封装了这些操作,提供接口供你使用...() # 实现登录和执行shell 命令 self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.transport

    60830

    原来Python是这样连接远程主机的,你会吗?

    导语: 在软件测试的过程中,涉及到远程Linux主机环境测试的时候,难免会遇到需要执行shell命令的场景,比如通过shell命令去配置一些环境或者去检查用例执行的结果等等,那么就是用到了比较常用的工具...是Python的一个库,实现了SSHv2协议(底层使用cryptography)。...有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。下面主要介绍一下Paramiko的一些相关概念。...即新建立ssh连接时不需要再输入yes或no进行确认 WarningPolicy 用于记录一个未知的主机密钥的python警告。...; ## -cmd shell 命令 ## -put 本地文件 远程文件 ## -get 远程文件 本地文件 print("批量执行脚本".center(50,"*")) while True

    2.1K40
    领券