【发布时间】:2018-04-04 16:18:46
【问题描述】:
背景:
我需要在不登录服务器的情况下在远程服务器上运行程序。服务器只允许人们联系它,而不是查看上面有什么文件或登录。
服务器中有一个.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])
问题:
- 如何向包含脚本文件的服务器发出单向请求并传递参数?
- 这是确保用户看不到管理员凭据的适当方法吗?
这里的问题 2 有点超出范围,因为根本问题是程序需要在数据库上创建一个新的用户帐户,但您必须使用授权帐户登录才能这样做。如果我将凭据硬编码或存储在本地机器可以看到的文件中,那么精明的用户可以调试程序并查看它们是什么。
我认为将它们放在任何人都看不到文件的服务器上,只要求服务器运行它们,这是一个安全的选择并确保安全。
【问题讨论】:
-
看看Flask flask.pocoo.org
-
如果你想构建一个自定义的网络服务,你要么需要套接字库,要么需要一些基于套接字的更高级别(并且可能更易于使用)的框架。这只是您要求做的事情所固有的。
-
你可以在一些现有的服务器上搭载,但你所做的任何事情基本上就像使用
sshd。例如,您可以设置一个放置目录,将其与samba共享,然后在有人在那里添加新文件时触发脚本——但是您只需要管理 SMB 凭据而不是 SSH 凭据,那又如何呢?你买了吗?
标签: python python-3.x server