Linux 在bash脚本中等待ssh密码
我试图通过ssh在远程机器上执行命令,我需要脚本等待ssh密码提供(如果需要)。 这是我的代码片段:Linux 在bash脚本中等待ssh密码,linux,bash,ssh,Linux,Bash,Ssh,我试图通过ssh在远程机器上执行命令,我需要脚本等待ssh密码提供(如果需要)。 这是我的代码片段: ssh -T ${remote} << EOF if [ ! -d $HOME/.ssh ]; then mkdir $HOME/.ssh touch $HOME/.ssh/authorized_keys chmod 0600 $HOME/.ssh/authorized_keys fi; EOF ssh-T${remote}这样简单: ssh -T ${re
ssh -T ${remote} << EOF
if [ ! -d $HOME/.ssh ]; then
mkdir $HOME/.ssh
touch $HOME/.ssh/authorized_keys
chmod 0600 $HOME/.ssh/authorized_keys
fi;
EOF
ssh-T${remote}这样简单:
ssh -T ${remote} << 'EOF'
if [ ! -d $HOME/.ssh ]; then
`mkdir $HOME/.ssh`
`touch $HOME/.ssh/authorized_keys`
`chmod 0600 $HOME/.ssh/authorized_keys`
else
EOF
建议改为使用语法。$()内部的反斜杠处理不那么令人惊讶,而且$()更容易嵌套。看
如果需要传递变量:
var=42
ssh -T ${remote} << EOF
if [ ! -d \$HOME/.ssh ]; then
\`mkdir \$HOME/.ssh\`
\`touch \$HOME/.ssh/authorized_keys\`
\`chmod 0600 \$HOME/.ssh/authorized_keys\`
else
echo $var
EOF
var=42
ssh-T${remote}请在放置代码时粘贴代码,而不是对其进行一些幻想。你的代码中不可能有这些反勾号。如果你不知道的话,要想自己在搜索引擎上找到好的关键字来找到它并不容易。你知道如何将变量传递给EOF之间的部分吗?我之前设置的都解析为空。
foo=$(command)
var=42
ssh -T ${remote} << EOF
if [ ! -d \$HOME/.ssh ]; then
\`mkdir \$HOME/.ssh\`
\`touch \$HOME/.ssh/authorized_keys\`
\`chmod 0600 \$HOME/.ssh/authorized_keys\`
else
echo $var
EOF