【发布时间】:2018-02-28 13:20:17
【问题描述】:
我正在尝试编写一个部署脚本,在将新版本复制到服务器后应该在远程机器上执行一些 sudo 命令。
#!/bin/bash
app=$1
echo "Deploying application $app"
echo "Copy file to server"
scp -pr $app-0.1-SNAPSHOT-jar-with-dependencies.jar nuc:/tmp/
echo "Execute deployment script"
ssh -tt stefan@nuc ARG1=$app 'bash -s' <<'ENDSSH'
# commands to run on remote host
echo Hello world
echo $ARG1
sudo ifconfig
exit
ENDSSH
文件被正确复制,传递的参数也被打印出来。但是密码提示会显示两秒钟,然后显示“对不起,再试一次”,第二个提示显示我以纯文本输入的文本(意思是没有被屏蔽),但如果我正确输入密码也不起作用。
stefan@X220:~$ ./deploy.sh photos
Deploying application photos
Copy file to server
photos-0.1-SNAPSHOT-jar-with-dependencies.jar 100% 14MB 75.0MB/s 00:00
Execute deployment script
# commands to run on remote host
echo Hello world
echo $ARG1
sudo ifconfig
exit
stefan@nuc:~$ # commands to run on remote host
stefan@nuc:~$ echo Hello world
Hello world
stefan@nuc:~$ echo $ARG1
photos
stefan@nuc:~$ sudo ifconfig
[sudo] password for stefan:
Sorry, try again.
[sudo] password for stefan: ksdlgfdkgdfg
我尝试为 ssh 省略 -t 标志,并为 sudo 使用 -S,但这没有帮助。非常感谢任何帮助。
【问题讨论】:
-
Ansible 在这里会有很大帮助
-
对于我的用例,我真的对此表示怀疑。我不得不来处理它,只是将一个罐子复制到一个特定的位置并重新启动这个过程......