使用sh库执行shell命令

Posted niansi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sh库执行shell命令相关的知识,希望对你有一定的参考价值。

python中执行shell命令

之前执行shell命令多是通过os.system(shell命令)的方式来执行,比较麻烦。

了解到sh是一个比subprocess好的库,能够执行shell命令

1.查看ip:

[[email protected] myblog]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.253.193 netmask 255.255.240.0 broadcast 172.31.255.255
ether 00:16:3e:01:72:ac txqueuelen 1000 (Ethernet)
RX packets 235322 bytes 231762359 (221.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 78402 bytes 15382388 (14.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

用sh完成:

In [13]: from sh import ifconfig

In [14]: print ifconfig("eth0")
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.253.193 netmask 255.255.240.0 broadcast 172.31.255.255
ether 00:16:3e:01:72:ac txqueuelen 1000 (Ethernet)
RX packets 236463 bytes 231849592 (221.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 79234 bytes 15505613 (14.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

2.查看/app目录下的文件:

In [24]: print sh.ls("/app")
git-2.14.1 myblog pyinit.py v2.14.1.tar.gz

In [27]: sh.ls("-l", "/app")
Out[27]:
drwxrwxr-x 26 root root 24576 9?. 12 20:52 git-2.14.1
drwxr-xr-x 6 root root 4096 9?. 13 21:53 myblog
-rw-r--r-- 1 root root 273 9?. 12 20:43 pyinit.py
-rw-r--r-- 1 root root 6983655 9?. 12 20:48 v2.14.1.tar.gz

查看/app下有多少个文件:

In [28]: sh.wc(sh.ls("-l", "/app"), "-l")
Out[28]: 5

3. 将/app下的文件存到列表里:

In [42]: list=sh.glob(‘/app/*‘)

In [43]: list
Out[43]: [‘/app/git-2.14.1‘, ‘/app/v2.14.1.tar.gz‘, ‘/app/pyinit.py‘, ‘/app/myblog‘]

4.管道:

In [45]: print(sh.sort(sh.du(sh.glob(‘/app/*‘),‘-shc‘),‘-rn‘))
397M ?.?
378M /app/git-2.14.1
13M /app/myblog
6.7M /app/v2.14.1.tar.gz
4.0K /app/pyinit.py




























以上是关于使用sh库执行shell命令的主要内容,如果未能解决你的问题,请参考以下文章

怎么用一个命令使多个shell脚本并行执行? 例如三个脚本 run1.sh,run2.sh

如何hook某一个shell命令

如何执行shell脚本其中一条命令

Shell脚本无法使用cd命令

执行shell脚本三种方法的区别:(sh、exec、source)

Linux下如何执行Shell脚本