我有一个Jenkins作业,在"Execute“下面有以下命令:
ssh jenkins@172.31.12.58
pwd
我希望Jenkins服务器通过SSH连接到远程服务器,然后在远程服务器上运行一个命令。
相反,Jenkins连接到远程服务器,立即断开连接,然后在本地运行pwd命令,如输出中所示:
Started by user Johanan Lieberman
Building in workspace /var/lib/jenkins/jobs/Test Github build/workspace
[workspace] $ /bin/sh -xe /tmp/hudson
我使用shell上的ssh在远程服务器上运行一个简单的命令。
我现在登录到myHost01中,我正在myHost02上运行这个命令
预期的结果是this is a test myHost02。然而,我得到了this is a test myHost01
这是我的命令
sshpass -p root ssh -q root@127.0.0.2 "echo this is a test `hostname`"
我不知道它为什么要使用我正在运行命令的服务器的主机名!
同样值得注意的是,当我运行这个
sshpass -p root ssh -q root@127.0.0.2 "
我有一个Rake任务来停止远程MySQL服务器,如下所示:
task :stop_mysql do
#SSH connect to the remote db server first
#how???
#then, run the following command
system 'sudo /etc/init.d/mysql stop'
end
正如您在上面看到的,现在数据库服务器是远程,我知道数据库服务器的IP地址。
如何以编程方式使ssh连接到数据库服务器,并在上面的rake任务中运行命令以停止MySQL?
P.S.