linux - 从脚本运行远程命令

标签 linux bash macos ssh sh

我需要从 jenkins 中运行一个 shell 脚本,以便在构建后提交更改。将构建部署到远程服务器不是问题,所以新构建就在那里。我需要做的就是提交它。

为此,我需要使用 shell 脚本通过 ssh 登录到该远程服务器,到目前为止一切正常:

#!/user/bin/expect -f
spawn ssh myusername@url
expect "password:"
send "mypassword\r"
interact

所以现在当我登录时,我想运行一些命令:cd/path/to/repository; svn commit -m "一些更改日志"

我试过类似的方法:

#!/user/bin/expect -f
spawn ssh -o "LocalCommand cd /path/to/repository" myusername@url
expect "password:"
send "mypassword\r"

但它就是行不通,因为我不知道该怎么做。

如果有人知道怎么做,请告诉我。

远程服务器在 linux 上运行,jenkins 在 osx 上运行。

最佳答案

我用 expect 找到了解决方案:

#!/user/bin/expect -f
spawn ssh myusername@url
expect "password:"
send "mypassword\r"
expect "some server prompt"
send "cd /path/to/repository\r"
send "svn commit -m 'Some change log'\r"

编辑:

这个解决方案似乎只是偶尔有效。我的意思是提交更改。

关于linux - 从脚本运行远程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327379/

相关文章:

Bash将十进制乘以int

MAC 上的 QT/C++ - 如何隐藏我的 Dock 图标?

java - 在 Java 中加载共享库的问题

linux - unix下两个文件的时间戳差异

linux - 在后台运行 heredoc 格式的脚本?

bash - 为大量 BASH 脚本构建帮助菜单

cocoa - 获取另一个应用程序窗口的唯一 ID

objective-c - 如何使用 Mac 上的系统首选项以编程方式安排系统唤醒?

c++ - 更新 glibc 后 std::tan() 非常慢

linux - 在命令 "cd production"上显示消息