我正在尝试执行bash命令作为我的curl语句的一部分。 bash命令假设执行显示某些消息的python文件。我怎样才能实现这一目标?这是我的尝试,但不起作用并显示命令的字符串而不是实际执行bash命令:
curl -X POST --data-urlencode 'payload={"channel": "#pxc-wsrep-test", "username": "webhookbot", "text": python test2.py, "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/F065ZJS3N/B4JT9K2TM/5KWZRYFIGhLL0MimiHAW6Gbz
下面是我要执行的python脚本test2.py:
from subprocess import Popen, PIPE, STDOUT
cmd = 'mysql -uroot -psecret -e"show status like \'wsrep_local_state_comment\'\G"'
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
output = p.stdout.read()
print output
所以我尝试在python脚本中运行curl,如下所示: 从子进程导入Popen,PIPE,STDOUT 导入请求
paylod={"text": 'mysql -uroot -psecret -e"show status like \'wsrep_local_state_comment\'\G"'}
r = request.post('https://hooks.slack.com/services/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', data=payload)
print(r.test)
{
"form": {
"test": 'mysql -uroot -psecret -e"show status like \'wsrep_local_state_comment\'\G"'
},
}
但即使安装了pip和request,我也会收到以下错误。
Traceback (most recent call last):
File "test.py", line 5, in <module>
r = request.post('https://hooks.slack.com/services/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', data=payload)
NameError: name 'request' is not defined
答案 0 :(得分:0)
我认为我们不需要在这里过多地复杂化。如果我们可以访问示例中的python脚本,我们可以使用requests或pycurl来完成python中的工作。
它可以像使用带有数据字典的post方法一样简单here
根据我们上次评论对话编辑回复
import requests # make sure we have requests installed or else use urllib
payload={"text": 'mysql -uroot -psecret -e"show status like \'wsrep_local_state_comment\'\G"'}
r = requests.post('https://hooks.slack.com/services/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', data=payload)
print(r.status_code)
print(r.content)
答案 1 :(得分:-1)
您可以使用反引号或$命令运行另一个命令
例如
echo hi`echo bye`
OR
echo hi$(echo bye)