我试图提出一种缩短命令的方法,该命令使我可以将配置从网络设备推送到备份(已氧化) 完整的命令如下所示:
curl http://192.168.195.57:8888/node/IPofDevicetoPush
该命令很长,想要推送配置时很烦人,所以我想缩短它。在我的python脚本中,我具有以下内容:
#!/usr/bin/env python
import os
IPofDevicetoPush =raw_input("IP or hostname: ")
os.system("curl http://192.168.X.X/node/next/IPofDevicetoPush")
我要在终端窗口中执行的操作是这样的:
sudo oxs -x Mypush.py IPofDevicetoPush
然后将IPofDevicetoPush“复制”到脚本中,以便脚本可以运行
os.system("curl http://192.168.X.X/node/next/IPofDevicetoPush")
答案 0 :(得分:2)
非常简单的事情
import sys
import os
os.system("curl http://192.168.X.X/node/next/{}".format(sys.argv[1]))
sys.argv
是一个包含以空格分隔的命令行参数的列表。 sys.argv[0]
是脚本本身,因此您的参数为sys.argv[1]
。
当然,您可以通过所有希望确保输入参数存在的检查来改进它,以满足您想要的任何条件。
答案 1 :(得分:0)
请注意,您应该favor subprocess methods over os.system。
尝试这样的事情:
#!/usr/bin/env python
import sys
from subprocess import call
if len(sys.argv) != 2:
print("Pass an arg.")
sys.exit(1)
cmd = "curl http://192.168.X.X/node/next/{}".format(sys.argv[1])
sys.exit(call(cmd, shell=True))