将终端命令简化为脚本

时间:2019-01-28 13:38:07

标签: python

我试图提出一种缩短命令的方法,该命令使我可以将配置从网络设备推送到备份(已氧化) 完整的命令如下所示:

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") 

2 个答案:

答案 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))