Linux 通过SSH在远程shell脚本执行中分配变量
我试图通过SSH在远程服务器上执行一些shell脚本 下面给出了一个代码示例:Linux 通过SSH在远程shell脚本执行中分配变量,linux,bash,shell,ssh,amazon-ec2,Linux,Bash,Shell,Ssh,Amazon Ec2,我试图通过SSH在远程服务器上执行一些shell脚本 下面给出了一个代码示例: ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash" << EOF #!/bin/bash cat /home/ubuntu/temp.txt string=$(cat /home/ubuntu/temp.txt ) echo $string EOF ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u
ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash" << EOF
#!/bin/bash
cat /home/ubuntu/temp.txt
string=$(cat /home/ubuntu/temp.txt )
echo $string
EOF
ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”您需要将Here doc的内容设置为文本,否则它们将在当前shell中展开,而不是在所需的远程shell中展开
报价EOF
:
ssh .... <<'EOF'
...
...
EOF
ssh 您需要将Here doc的内容设置为literal,否则它们将在当前shell中展开,而不是在所需的远程shell中展开
报价EOF
:
ssh .... <<'EOF'
...
...
EOF
ssh 您应该能够简单地执行以下操作:
ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash" <<'_END_'
cat /home/ubuntu/temp.txt
string=$(cat /home/ubuntu/temp.txt)
echo $string
_END_
ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”您应该能够简单地执行以下操作:
ssh -i $KEYFILE_PATH ubuntu@$TARGET_INSTANCE_IP "bash" <<'_END_'
cat /home/ubuntu/temp.txt
string=$(cat /home/ubuntu/temp.txt)
echo $string
_END_
ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP“bash”不需要中间shell(假设您在远程系统上使用bash
)。
此外,您不必使用中间文件。只需传递一个多行命令:
ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP'
cat/home/ubuntu/temp.txt
字符串=$(cat/home/ubuntu/temp.txt)
echo$字符串
'
注意:我使用单引号来防止在本地shell上求值。不需要中间shell(假设您在远程系统上使用bash
)。
此外,您不必使用中间文件。只需传递一个多行命令:
ssh-i$KEYFILE\u PATH ubuntu@$TARGET\u INSTANCE\u IP'
cat/home/ubuntu/temp.txt
字符串=$(cat/home/ubuntu/temp.txt)
echo$字符串
'
注意,我使用单引号来防止在本地shell上进行求值。尝试了!!不走运@静默\u/home/ubuntu/temp.txt
文件在哪里?本地还是远程?它在远程服务器上..我认为这是一个调整。。它正在工作。。谢谢..试过了!!不走运@静默\u/home/ubuntu/temp.txt
文件在哪里?本地还是远程?它在远程服务器上..我认为这是一个调整。。它正在工作。。谢谢