sshpass
で複数のコマンドを使用する方法はありますか、異なる組み合わせで試しましたが、エラーがスローされます。
$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one
command_two
command_three
EOF
正確で正確なコマンドは何ですか、可能であれば例を挙げてください。
ソリューションは、sshpassの有無に関係なく機能します。機能しない場合は、他に問題がある可能性があります。
また、常にすべての変数を引用符で囲む必要があることに注意してください。
さらに、stricthostkeycheckingを軽く無効にしないでください。ホストキーが頻繁に変更される場合、サーバーはおそらく侵害されています
ただし、目標を達成するためのいくつかの方法があります。
コマンド区切り文字(;
、&&
、||
)
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" 'command_one; command_two; command_three'
Here-docを使用する(単一引用符EOFを使用すると、リモートホストで変数/コマンド置換を展開できます):
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" <<EOF
command_one
command_two
command_three
EOF
別のファイルを使用する:
file.sh
command_one
command_two
command_three
次に、次のように実行します。
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress"
Sshトンネルを使用する:
sshpass -p "$password" ssh -f -L 3306:localhost:3306 "$username@ipaddress" sleep 300 # This will open a tunnel to the remote Host and hold it open for 5 minutes
ssh -T "$username@ipaddress" 'command_one'
ssh -T "$username@ipaddress" 'command_two'
ssh -T "$username@ipaddress" 'command_three'
このようにしてみてください:
$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF
私は上記を行いました、そしてそれはうまく働きます。