所以我有一个python文件,我们称之为foo.py,位于远程服务器上。该文件基本上包含一个静态字典,然后由该服务器上的其他进程使用。我希望能够SSH到这个远程服务器并修改这个静态字典中的一些字段。到目前为止,我一直在使用模式匹配和sed这样做,但这是一种相当“脏”的方法(有时候有点复杂)。我想知道是否有更简洁,更简单的方法来实现这一目标?
一些规则:我不想在本地复制文件,修改它并将其发回。另外,我不想将脚本复制到执行修改的服务器上。
答案 0 :(得分:0)
您可以考虑使用专门用于存储的文件类型,而不是使用python字典进行存储,然后运行python脚本来解析它。 JSON与python词典非常相似,而built-in json library使得导入和导出非常简单。这甚至可以用于存储自定义python类对象,只要它们可以被序列化。
为了从ssh会话编辑它,你可以启动一个python交互式shell,导入json,加载文件,进行编辑,然后将结果转储回文件。以下是一些示例用法:
$ ssh user@host
user@host$ python
>>> import json
>>> store = dict(a=1, b=2, c=3, name='Jim')
>>> with open('store.json', 'w') as f:
... json.dump(store, f)
...
>>> with open('store.json', 'r') as f:
... store2 = json.load(f)
...
>>> print store2
{u'a': 1, u'c': 3, u'b': 2, u'name': u'Jim'}
>>> store2['a'] = 4
>>> print store2
{u'a': 4, u'c': 3, u'b': 2, u'name': u'Jim'}
>>> with open('store.json', 'w') as f:
... json.dump(store, f)