Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在bash脚本中等待ssh密码_Linux_Bash_Ssh - Fatal编程技术网

Linux 在bash脚本中等待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在远程机器上执行命令,我需要脚本等待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 ${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