将 bash 脚本中的变量传递给 sshpass
Passing a variable in a bash script to sshpass
我正在尝试将 bash 脚本中的变量传递给 sshpass。这是我的代码供参考:
NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' << 'EOF'
echo $NAME
EOF
如何将 bash 脚本中的变量传递给 sshpass?谢谢!
放在-p
选项后面:
password=YourPassword
sshpass -p "$password" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' <<EOF
echo "$NAME"
EOF
您可以简单地在变量名前加上一个美元符号,如本例所示:
Linux Prompt>cat test.txt
<here you see file content>
Linux Prompt>filename=test.txt
Linux Prompt>cat $filename
<here you see file content>
最简单的方法是在 运行 bash
之前使用 env
NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" 'bash -s' << 'EOF'
echo $NAME
EOF
您可以使用多个 env 语句传递多个变量,例如
export NAME="HARRY"
export SOMEVAR="hello"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" env SOMEVAR="$SOMEVAR" 'bash -s' << 'EOF'
echo $NAME
EOF
请注意,您的变量在传递时可能会被解释。您可以通过将 env NAME="$NAME"
更改为未解释的版本 env NAME="'$NAME'"
来避免这种情况
我正在尝试将 bash 脚本中的变量传递给 sshpass。这是我的代码供参考:
NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' << 'EOF'
echo $NAME
EOF
如何将 bash 脚本中的变量传递给 sshpass?谢谢!
放在-p
选项后面:
password=YourPassword
sshpass -p "$password" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' <<EOF
echo "$NAME"
EOF
您可以简单地在变量名前加上一个美元符号,如本例所示:
Linux Prompt>cat test.txt
<here you see file content>
Linux Prompt>filename=test.txt
Linux Prompt>cat $filename
<here you see file content>
最简单的方法是在 运行 bash
之前使用 envNAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" 'bash -s' << 'EOF'
echo $NAME
EOF
您可以使用多个 env 语句传递多个变量,例如
export NAME="HARRY"
export SOMEVAR="hello"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" env SOMEVAR="$SOMEVAR" 'bash -s' << 'EOF'
echo $NAME
EOF
请注意,您的变量在传递时可能会被解释。您可以通过将 env NAME="$NAME"
更改为未解释的版本 env NAME="'$NAME'"