Ingin memperbaiki pertanyaan ini? Perbarui pertanyaan agar sesuai dengan topik untuk Unix &Linux Stack Exchange.
Ditutup 2 tahun yang lalu.
Perbaiki pertanyaan ini
Apakah ada cara untuk menggunakan beberapa perintah di sshpass
, saya mencoba dengan kombinasi yang berbeda tetapi menghasilkan kesalahan.
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no [email protected]$ipaddress << EOF
command_one
command_two
command_three
EOF
Apa perintah yang benar dan tepat, berikan saya contoh jika memungkinkan.
Jawaban yang Diterima:
Solusi Anda berfungsi dengan atau tanpa sshpass, jika tidak berhasil untuk Anda, kemungkinan ada yang salah.
Perhatikan juga bahwa Anda harus selalu mengutip setiap variabel.
Selain itu, Anda tidak boleh menonaktifkan pemeriksaan stricthostkey dengan mudah. Jika kunci host Anda sering berubah, server Anda mungkin telah disusupi
Berikut adalah beberapa cara untuk mencapai tujuan Anda:
Menggunakan pemisah perintah (;
, &&
, ||
)
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" 'command_one; command_two; command_three'
Menggunakan di sini-doc (Kutipan tunggal EOF untuk memiliki variabel/substitusi perintah apa pun yang diperluas pada Host jarak jauh):
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" <<EOF
command_one
command_two
command_three
EOF
Menggunakan file terpisah:
file.sh
command_one
command_two
command_three
Kemudian jalankan seperti ini:
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]"
Menggunakan terowongan ssh:
sshpass -p "$password" ssh -f -L 3306:localhost:3306 "[email protected]" sleep 300 # This will open a tunnel to the remote host and hold it open for 5 minutes
ssh -T "[email protected]" 'command_one'
ssh -T "[email protected]" 'command_two'
ssh -T "[email protected]" 'command_three'