【发布时间】:2018-04-26 23:39:06
【问题描述】:
我正在尝试将数据从 CGI 脚本发送到 C 服务器,以便将数据写入 XML 文件。
客户端.cgi:
import cgi, cgitb
import os
import sys
import argparse
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings()
import sys
import socket
form = cgi.FieldStorage()
#--PARSING THE ARGUMENTS
#--To be used to get arguments from Command Line or Php Script
parser = argparse.ArgumentParser(description ='parser script')
parser.add_argument('--serverId', required=True, help='Server ID to find device info')
parser.add_argument('--name', required=True, help='Name Of the Policy')
parser.add_argument('--host', default='any', help='Host of the IP Address')
parser.add_argument('--port', default='any', help='Port used')
parser.add_argument('--proto', default='any', help='Protocol used')
parser.add_argument('--username', default='any', help='Username')
parser.add_argument('--password', default='any', help='Password')
parser.add_argument('--key', default='any', help='')
parser.add_argument('--companyName', default='any', help='Name of the Company')
parser.add_argument('--officeAddress', default='any', help='Address of the Company')
parser.add_argument('--state', default='any', help='State')
parser.add_argument('--country', default='any', help='Country')
parser.add_argument('--ladmin', default='any', help='Local Admin')
parser.add_argument('--phone', default='any', help='Phone Number')
parser.add_argument('--mobile', default='any', help='Mobile Number')
parser.add_argument('--email', default='any', help='Email Address')
parser.add_argument('--designation', default='any', help='Designation of the concerned')
parser.add_argument('--rManager', default='any', help='Reporting Manager of the concerned Person')
args = parser.parse_args()
#--Associating variables to parsed arguments
serverId = str(args.serverId)
name = str(args.name)
host = str(args.host)
port = str(args.port)
proto = str(args.proto)
user = str(args.username)
password = str(args.password)
key = str(args.key)
company = str(args.companyName)
officeAddr = str(args.officeAddress)
state = str(args.state)
country = str(args.country)
ladmin = str(args.ladmin)
phone = str(args.phone)
mobile = str(args.mobile)
email = str(args.email)
designation = str(args.designation)
reportingMgr = str(args.rManager)
def client_program():
host = socket.gethostname() # as both code is running on same pc
port = 8888 # socket server port number
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # instantiate
client_socket.connect((host, port)) # connect to the server
sum = serverId+";"+name+";"+host+";"+port+";"+proto+";"+user+";"+password+";"+key+";"+company+";"+officeAddr+";"+state+";"+country+";"+ladmin+";"+phone+";"+mobile+";"+email+";"+designation+";"+reportingMgr
client_socket.sendall(sum.encode('utf-8'))
data = client_socket.recv(1024)
text = str(data)
print('received:' +text)
print('closing socket')
client_socket.close()
if __name__ == '__main__':
client_program()
当通过命令行传递参数时
python dscr.cgi --serverId PA124 --name Devanshu
我收到如下回溯电话
Traceback (most recent call last):
File "dscr.cgi", line 90, in <module>
client_program()
File "dscr.cgi", line 79, in client_program
sum = serverId+";"+name+";"+host+";"+port+";"+proto+";"+user+";"+password+";"+key+";"+company+";"+officeAddr+";"+state+";"+country+";"+ladmin+";"+phone+";"+mobile+";"+email+";"+designation+";"+reportingMgr
TypeError: must be str, not int
我意识到这不过是一个愚蠢的错误,但我无法找出是什么。提前感谢您的帮助。
【问题讨论】:
标签: python python-3.x