在Python';s-sh模

在Python';s-sh模,python,curl,Python,Curl,我正在使用Python中的sh模块将curl命令转换为Python,但是我得到了一个错误,因为我在Python中的curl调用中使用了多个F标志 以下是原始的curl代码: curl -u admin:admin -F x=y http://localhost:8080/foo curl -u admin:admin -F :operation=copy -F :dest=/foo/bar http://localhost:8080/foo 我的代码在这里: def exploit(url,

我正在使用Python中的sh模块将curl命令转换为Python,但是我得到了一个错误,因为我在Python中的curl调用中使用了多个F标志

以下是原始的curl代码:

curl -u admin:admin -F x=y http://localhost:8080/foo
curl -u admin:admin -F :operation=copy -F :dest=/foo/bar http://localhost:8080/foo
我的代码在这里:

def exploit(url, username, password):
    sh.curl(url, F = "x=y", u = "%s:%s" %(username, password))
    sh.curl(url, F = ":operation=copy", F = ":dest=/foo/bar", u = "%s:%s" %(username, password))

def main():
    #default username and password is admin:admin
    username = "admin"
    password = "admin"
    exploit("http://localhost:8080/foo", username, password)
以下是错误消息:

  File "/Users/Winston/Desktop/sling_exploit.py", line 7
sh.curl(url, F = ":operation=copy", F = ":dest=/foo/bar", u = "%s:%s" %(username, password))
SyntaxError: keyword argument repeated

有人能帮我找到解决办法吗?任何帮助都将不胜感激。谢谢。

我用PyCurl为感兴趣的人找到了答案

def exploit(url, username, password):
    c = pycurl.Curl()
    c.setopt(c.URL, url)
    data = [
         ('x', 'y')
    ]
    c.setopt(c.HTTPPOST, data)
    c.setopt(pycurl.USERPWD, username + ':' + password)
    c.perform()
    data_2 = [
         (':operation', 'copy'),
         (':dest', '/foo/bar')
    ]
    c.setopt(c.HTTPPOST, data_2)
    c.perform()
    c.close()

def main():
    #default username and password is admin:admin
    username = "admin"
    password = "admin"
    exploit("http://localhost:8080/foo", username, password)

从文档中看,这似乎不是
sh
支持的用法。