本文章向大家介绍[Python库]分析一个python库–sh(系统调用),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
SH是一个独特的子进程包装器,可将您的系统程序动态映射到Python函数。SH帮助您用Python编写Shell脚本,
既能支持Bash的所有功能(简单的命令调用,简单的管道传输) ,又能兼顾Python的灵活性。 [资源]
SH是Python中成熟的子进程接口,允许您调用任何系统程序,就好像它是一个函数一样。也就是说,SH让您几乎可以调用任何可以从登录shell运行的命令。
更重要的是,您可以更轻松地捕获和解析命令的输出。
通过pip命令来安装sh
pip install sh
启动和运行的最简单方法是直接导入sh或从sh导入您需要的命令。然后,该命令就可以像Python函数一样使用。
比如,传递参数,捕获输出并在python中使用输出。详见下面的代码示例
import sh
print sh.ifconfig("eth0")
from sh import ifconfig
print ifconfig("eth0")
print ls("-l")
sh.google_chrome("http://google.com")
子命令的两种写入方式
>>> from sh import git, sudo
>>> print(git.branch("-v"))
>>> print(git("branch", "-v"))
>>> print(sudo.ls("/root"))
>>> print(sudo("/bin/ls", "/root"))
>>> with sh.contrib.sudo(_with=True):
print(ls("/root"))
from sh import tar
tar("cvf", "/tmp/test.tar", "/my/home/directory/")
from sh import tar
tar("cvf /tmp/test.tar /my/home/directory")
命令的调用就像函数一样。
但是“需要注意的是,这些不是真正的Python函数,实际运行的是系统中对应的二进制命令,就像Bash一样,通过解析PATH在系统上动态地运行。
也正因为这样,Python对Shell命令的支持非常好,系统上所有命令都可以通过Python轻松运行。”
许多程序都有自己的命令子集,例如git(分支,签出)。
sh通过属性访问处理子命令。
from sh import git
print(git.branch("-v"))
print(git("branch", "-v"))
关键字参数也可以像您期望的那样工作:它们被替换为命令行参数选项。
sh.curl("http://duckduckgo.com/", o="page.html", silent=True)
sh.curl("http://duckduckgo.com/", "-o", "page.html", "--silent")
sh.adduser("amoffat", system=True, shell="/bin/bash", no_create_home=True)
sh.adduser("amoffat", "--system", "--shell", "/bin/bash", "--no-create-home")
“Which”查找程序的完整路径,如果不存在,则返回None。 该命令是用Python函数真正实现的少数命令之一,
因此不依赖于实际存在的”which”二进制程序。
print sh.which("python")
print sh.which("ls")
if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")
sh还可以使用更多功能,并且可以找到所有功能。 在里面官方文件。
sh可以将”baking”参数用作命令,作用是输出对应的完整命令行字符串,如下面的代码所示:
from sh import ls
ls = ls.bake("-la")
print(ls)
print(ls("/"))
ssh+baking命令
在命令上调用”bake”会创建一个可调用对象,该对象会自动传递所有传递给”bake”的参数。
serverX = ssh("myserver.com", "-p 1393", "whoami")
myserver = sh.ssh.bake("myserver.com", p=1393)
print(myserver)
现在,可调用“myserver”表示一个baking的ssh命令:
print(myserver.tail("/var/log/dumb_daemon.log", n=100))
print myserver.uptime()
15:09:03 up 61 days, 22:56, 0 users, load average: 0.12, 0.13, 0.05
如果想了解更多的内容和功能,可以参考官方文件。
参考文章:How to use sh in Python
python之sh快速入门前言:虽然python有足够多的库来干足够多的事,但是一些基于linux脚本类的小事,还是会觉得用shell脚本要更方便,再但是我就是想用python呀,怎么完美的糅合两者呢?我想sh是一个很好的选择,非常优雅。注:还是那句话,自己手工翻译的,有点粗糙,没有校正,估计也不会校正了,权当练手的参考:https://amoffat.github.io/sh/sh是个很酷的模块...
然后再输入./hello,sh或 sh hello.sh。先给文件添加x权限chmod u+x hello.sh。以下就是Linux下面如何运行.sh文件的总结。执行hello.sh文件。查看目录.sh文件。
4. pycharm 中terminal 运行sh文件 改为sh.exe所在路径C:\Program Files\Git\bin。在Windows操作系统下运行Shell脚本,缺少的只是一个Git软件。2. 如果windows系统 则需要先下git软件。3. cmd中修改路径 (转载)1. 首先得有一个sh文件。的路径添加到系统环境变量。安装之后,将安装路劲下的。
Python sh 库是一个用于执行 Shell 命令和操作的 Python 模块。它提供了简洁的 API,可以在 Python 中直接调用各种 Shell 命令,并获得命令执行结果。sh 库的设计目标是让 Python 开发者能够轻松地利用 Python 的强大功能来执行 Shell 脚本操作,而无需直接编写复杂的 Shell 脚本。Python sh 库为开发者提供了一个简化 Shell 脚本操作的利器,使得在 Python 中执行各种 Shell 命令和操作变得简单而直观。
我们知道,python 在自动化领域中被广泛应用,可以很好地自动化处理一些任务,就比如编写 Python 脚本自动化执行重复性的任务,如文件处理、数据处理、系统管理等需要运行其他程序或者与操作系统交互的任务。那么今天我们来看一下在 python 中如何运行 shell 命令来与操作系统交互。
在linux系统里shell和python是我们经常用的脚本语言。两者在某些地方有着相似之处,容易记混,这里对两者进行一个总结和归纳。
shell和python :实现自动化运维、一键自动化软件安装、优化、监控报警脚本、软件启动脚本、日志分析脚本等。
shell:
注释方式:单行 # 注释内容 ; 多行 :<<! 备注释内容·
python:功能强大、跨平台,爬虫、数据分析、shell能实现的python均能实现。
shell:
今天需要编写一个shell脚本实现App自动生成的功能,需要处理HTTP REST请求,解析JSON,处理文件,执行命令等,本来想用shell搞定,但感觉比较麻烦,还是用python吧,虽然以前用Python都是在树莓派上玩的,多尝试一种方法总是好的。
虽然我受linux的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极。为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法
直接调用命令,返回值即是系统返回。可以看出,popen方法通过p.read()获取终端输出,而且popen需要关闭close().当执行成功时,close()不返回任何值,失败时,close()返回系统返回值. 可见它获取返回值的方式和os.system不同。例如,在Python安装完成之后都会存在有交互式的编程环境,那么本次将通过程序调用交互式编程环境直接操作python命令行,在python命令行中直接输入程序。返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和linux是不一样的。
一、开篇看文章标题, 很高大上。主要介绍 实现一键式自动化操作,具体的操作是:如何快速的创建 Python 与 Shell 文件? 是的,创建 Python 与 Shell 文件是一个很简单的事情,但是如何做到 快速,这恐怕需要动点歪脑筋。我所能想到的常规方法是(Shell为例):1、调取(Go2Shell)终端,touch filename.sh。2、直接使用 IDE 创建。以上两个方法,貌似没...