I am trying to pass a variable in a bash script to sshpass. Here is my code for reference:
NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' << 'EOF'
echo $NAME
EOF
How can I pass the variable in a bash script to sshpass? Thank you!
Easiest way is using env just before running bash
NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" 'bash -s' << 'EOF'
echo $NAME
EOF
You can pass multiple variables with multiple env statements like
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
Be aware that your variables might be interpreted when passing them. You can avoid that by changing env NAME="$NAME"
to uninterpreted version env NAME="'$NAME'"