# subprocess
# check_output执行外部命令
可以使用subprocess.check_output()执行一个外部命令并获取执行结果,此外还可以通过strerr参数来重定向错误输入以收集,可以使用timeout参数来使用超时机制来执行命令,使用shell参数来让命令被shell执行。
如果执行失败则catch的Exception中会带有一些信息,例如e.ouput是报错之前的输出,e.returncode是返回码。
import subprocess
out_bytes = subprocess.check_output(['netstat','-a'])
out_text = out_bytes.decode('utf-8')
"""
>>> import subprocess
>>> out_bytes = subprocess.check_outpit(['ls','-al'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'subprocess' has no attribute 'check_outpit'
>>> out_bytes = subprocess.check_output(['ls','-al'])
>>> out_bytes
b'total 120\ndrwx------ 6 ubuntu ubuntu 4096 Mar 9 10:26 .\ndrwxr-xr-x 6 root root 4096 Jan 21 00:51 ..\n-rw-r--r-- 1 ubuntu ubuntu 54422 Mar 9 10:27 .bash_history\ndrwx------ 2 ubuntu ubuntu 4096 Aug 12 2020 .cache\n-rw-r--r-- 1 root root 0 Aug 12 2020 .cloud-warnings.skip\n-rw-rw-r-- 1 ubuntu ubuntu 90 Jan 29 17:45 .gitconfig\ndrwxr-xr-x 2 root root 4096 Apr 13 2021 .pip\n-rw-r--r-- 1 root root 73 Apr 13 2021 .pydistutils.cfg\ndrwx------ 2 ubuntu ubuntu 4096 Jan 29 17:46 .ssh\n-rw-r--r-- 1 ubuntu ubuntu 0 Aug 12 2020 .sudo_as_admin_successful\ndrwxr-xr-x 2 ubuntu ubuntu 4096 Jan 21 14:31 .vim\n-rw------- 1 ubuntu ubuntu 19937 Feb 3 10:21 .viminfo\n-rw-rw-r-- 1 ubuntu ubuntu 165 Jan 31 18:13 .wget-hsts\n-rw------- 1 ubuntu ubuntu 183 Mar 9 10:26 .Xauthority\n'
>>> out_text = out_bytes.decode('utf-8')
>>> out_text
'total 120\ndrwx------ 6 ubuntu ubuntu 4096 Mar 9 10:26 .\ndrwxr-xr-x 6 root root 4096 Jan 21 00:51 ..\n-rw-r--r-- 1 ubuntu ubuntu 54422 Mar 9 10:27 .bash_history\ndrwx------ 2 ubuntu ubuntu 4096 Aug 12 2020 .cache\n-rw-r--r-- 1 root root 0 Aug 12 2020 .cloud-warnings.skip\n-rw-rw-r-- 1 ubuntu ubuntu 90 Jan 29 17:45 .gitconfig\ndrwxr-xr-x 2 root root 4096 Apr 13 2021 .pip\n-rw-r--r-- 1 root root 73 Apr 13 2021 .pydistutils.cfg\ndrwx------ 2 ubuntu ubuntu 4096 Jan 29 17:46 .ssh\n-rw-r--r-- 1 ubuntu ubuntu 0 Aug 12 2020 .sudo_as_admin_successful\ndrwxr-xr-x 2 ubuntu ubuntu 4096 Jan 21 14:31 .vim\n-rw------- 1 ubuntu ubuntu 19937 Feb 3 10:21 .viminfo\n-rw-rw-r-- 1 ubuntu ubuntu 165 Jan 31 18:13 .wget-hsts\n-rw------- 1 ubuntu ubuntu 183 Mar 9 10:26 .Xauthority\n'
"""