背景
我需要在远程服务器上运行程序而无需登录服务器。服务器只允许人们联系它,而不是查看其上的文件或登录。
服务器中包含.py
和Python
的安装。该文件具有数据库的硬编码登录凭据,我不希望本地机器程序的用户看到它。
我想联系服务器,传递参数并请求它与它们一起运行程序。
原因是我不希望我的程序在本地计算机上存储服务器的登录凭据,因此我不想ssh
,因为这将再次需要某种形式的本地化凭证,在某些时候向用户公开的凭证(我从不希望他们看到它们)。
传统上,当我进行远程机器调用时,它通过requests
或http.client
库访问公开的API;根据我的发现,这可能需要socket
库,这是一个我不太熟悉的库,似乎无法找到我想要做的例子。
服务器代码:
import sys
from pymongo import MongoClient
usr = 'user_login'
pwd = 'user_pass'
client = MongoClient('mongodb://' + usr + ':' + pwd +'@host:port')
db = client['some_db']
db.add_user(sys.argv[1], sys.argv[2])
问题(S):
问题2在某种程度上超出了范围,因为底层问题是程序需要在数据库上创建新的用户帐户,但您必须使用授权帐户登录才能执行此操作。如果我将凭证硬编码或存储在本地机器可以看到的文件中,那么精明的用户可以调试程序并查看它们是什么。
我想把它们放在没有人能看到文件的服务器上,只要求服务器运行它们,这将是一个安全的选择并确保安全。
答案 0 :(得分:0)
您需要的似乎是典型的HTTP端点。需要阅读和考虑的事项:
web.py
。或者,您可以将程序作为CGI script运行,无论语言如何。答案 1 :(得分:0)
一个简单的例子
from flask import Flask, request
app = Flask(__name__)
@app.route("/adduser")
def hello():
user = request.args.get("user")
pwd = request.args.get("pwd")
client = MongoClient('mongodb://' + usr + ':' + pwd +'@host:port')
db = client['some_db']
db.add_user(user, pwd)
return "user inserted"
if __name__ == '__main__':
app.run()
并发出以下请求http://localhost:5000/adduser?user=root&pwd=1234
最重要的是你可以使用POST over SSL(HTTPS),这样数据就会被加密并在请求体中传输,而不是url(比如GET)这个就足够了,安全明智