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