web-dev-qa-db-ja.com

sshpassの複数のコマンド

sshpassで複数のコマンドを使用する方法はありますか、異なる組み合わせで試しましたが、エラーがスローされます。

$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
  command_one
  command_two
  command_three
EOF

正確で正確なコマンドは何ですか、可能であれば例を挙げてください。

4
Harry

ソリューションは、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'

6
jesse_b

このようにしてみてください:

$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF

私は上記を行いました、そしてそれはうまく働きます。

3
slm