前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0x9 Python教程:命令自动化

0x9 Python教程:命令自动化

作者头像
重生信息安全
发布2020-04-26 12:45:31
6440
发布2020-04-26 12:45:31
举报
文章被收录于专栏:重生信息安全重生信息安全

本教程将介绍一些自动执行OS命令的Python技术。我们将展示使用Python(os,subprocess)执行命令的两种方法。

当您开始创建Python脚本时,您可能会发现自己正在利用os.system和subprocess.Popen,因为它们允许您运行OS命令。os.system和subprocess.Popen之间的主要区别在于子进程允许您将STDOUT重定向到Python中的变量。如果您想在将STDOUT打印到屏幕之前进一步调整STDOUT,这通常非常有用。

代码:

  • >>>>>> import os>>> os.system('uname -a')Linux cell 3.11.0-20-generic #35~precise1-Ubuntu SMP Fri May 2 21:32:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux0>>> os.system('id')uid=1000(cell) gid=1000(cell) groups=1000(cell),0(root)0>>> os.system('ping -c 1 127.0.0.1')PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.043 ms --- 127.0.0.1 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.043/0.043/0.043/0.000 ms0>>>

正如您所看到的,使用os模块运行系统命令并不多。查看os函数“dir(os)”提供的一些附加功能。

让我们用子进程模块运行一些相同的命令:

代码语言:javascript
复制
>>> import subprocess>>>>>> com_str = 'uname -a'>>> command = subprocess.Popen([com_str], stdout=subprocess.PIPE, shell=True)>>> (output, error) = command.communicate()>>> print outputLinux cell 3.11.0-20-generic #35~precise1-Ubuntu SMP Fri May 2 21:32:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux >>> com_str = 'id'>>> command = subprocess.Popen([com_str], stdout=subprocess.PIPE, shell=True)>>> (output, error) = command.communicate()>>> print outputuid=1000(cell) gid=1000(cell) groups=1000(cell),0(root)>>>

正如您所看到的,子进程的语法更复杂,但从STDOUT重定向到变量的能力非常有价值。这允许您操作输出或将输出写入文件:

代码语言:javascript
复制
>>> com_str = 'id'>>> command = subprocess.Popen([com_str], stdout=subprocess.PIPE, shell=True)>>> (output, error) = command.communicate()>>> output'uid=1000(cell) gid=1000(cell) groups=1000(cell),0(root)n'>>> f = open('file.txt', 'w')>>> f.write(output)>>> f.close()>>> for line in open('file.txt', 'r'):...   print line...uid=1000(cell) gid=1000(cell) groups=1000(cell),0(root) >>>

本教程中显示的技术对于自动执行OS命令非常有用。当你要抨击CLI功夫时,请记住它总是被抛入Python脚本中。

自己尝试一下,编写一个运行几个命令的脚本并将输出写入文件,或只打印一部分输出。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档