【发布时间】:2016-10-10 11:21:51
【问题描述】:
我需要通过 ssh 连接到远程 Ubuntu 服务器来执行一些日常工作,步骤如下:
- 以 userA 身份登录
- sudo su - 用户 B
- 使用 psycopg2 运行 daliy_python.py 脚本从数据库中读取一些信息(通过本地连接(非 TCP/IP))
- scp 读数到我的本地机器
问题是:如何自动执行此操作? 我尝试使用 Fabric,但我遇到了 psycopg2 的问题,在我运行下面的 Fabric 脚本后,我收到了来自我的 daliy_python.py 的错误
psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/xxx/.s.xxxx"?
我的 fabfile.py 代码如下:
from fabric.api import *
import os
import socket
import pwd
# Target machine setting
srv = 'server.hostname.com'
env.hosts = [srv]
env.user = 'userA'
env.key_filename = '/location/to/my/key'
env.timeout = 2
# Force fabric abort at timeout
env.skip_bad_hosts = False
def run_remote():
user = 'userB'
with settings(warn_only=True):
run('whoami')
with cd('/home/%s/script/script_folder' % user):
sudo('whoami')
sudo('pwd', user=user)
sudo('ls', user=user)
sudo('python daliy_python.py', user=user)
有什么建议吗?我的数据库只能在本地通过 userB 访问,但只有 userA 可以 ssh 到服务器。这可能是一个限制。本地和远程机器都在运行 Ubuntu 14.04。
【问题讨论】:
-
这是一个数据库连接错误,它与使用结构运行远程进程确实是一个单独的问题。查看其中一些可能的解决方案:stackoverflow.com/questions/5500332/…stackoverflow.com/questions/26034092/…
-
@chishaku 谢谢,我不知道这个错误来自哪里,如果我通过 ssh 连接到服务器并执行该工作,它工作正常。它只是在我使用织物脚本时发生的,这让我想知道我是否对织物设置做错了/或者我应该使用其他工具?
标签: python postgresql ssh ubuntu-14.04 fabric