【发布时间】:2018-09-14 08:00:12
【问题描述】:
我正在编写“假部署”bash 脚本,我想运行它来拉取服务器上的最新主服务器。我有以下脚本:
#!/usr/bin/expect -f
spawn ssh -t user@host.domain 'cd path/to/dir'
expect "continue"
sleep 1
send "yes\r"
expect "assword:"
sleep 1
send "password\r"
# Commands for remote
git pull origin master
expect "sername"
sleep 1
send "username\r"
expect "assword"
sleep 1
send "password\r"
interact
连接成功,但是运行git pull origin master时,会触发错误:invalid command name "git"。
我可能应该以不同的方式运行命令,不幸的是,我不确定如何。我如何能够在遥控器上运行“远程命令”? 提前致谢。
【问题讨论】:
-
机器上安装了git吗?这个错误意味着它没有......
-
感谢您的评论。 Git 肯定安装在那里,因为当我手动执行时,我完全能够使用 git 命令。我想问题可能是在建立连接后,命令在一些奇怪的环境中运行(而不是直接在终端内)。但是我这辈子第三次编写 bash 脚本了,所以我不确定。
-
不管你的 git 命令本身有什么问题,你为什么要使用 expect?您可以使用 ssh 密钥:help.github.com/articles/connecting-to-github-with-ssh 或个人访问令牌:help.github.com/articles/…,您完全不必使用期望。
标签: bash ssh remote-access git-bash