Saya mencoba ini dengan harapan, tetapi tidak berhasil: itu menutup koneksi di akhir.
Bisakah kita menjalankan skrip melalui ssh yang akan masuk ke mesin jarak jauh, menjalankan perintah, dan tidak memutuskan sambungan?
Jadi ssh di mesin, cd ke direktori ini dan itu, dan kemudian jalankan perintah, dan tetap masuk.
-Jonathan
(harap saya menggunakan)
#!/usr/bin/expect -f
set password [lrange $argv 0 0]
spawn ssh root@marlboro "cd /tmp; ls -altr | tail"
expect "?assword:*"
send -- "$password\r"
send -- "\r"
interact
linux
ssh
command-line-interface
automation
Jonathan
sumber
sumber
Jawaban:
Tambahkan a
; /bin/bash
ke akhir baris perintah Anda di sisi jarak jauh? Itu adalah:Bahkan lebih baik, ubah .bashrc root menjadi seperti ini:
:)
sumber
-i
ke bash itu.ssh -t
untuk mengalokasikan pty.Jika Anda baik-baik saja dengan melakukan hal ini dengan Python, pexpect memiliki contoh yang hampir sama persis dengan yang Anda minta:
Untuk melakukan ini dengan ssh daripada ftp, Anda ingin kode yang mirip dengan yang berikut ini (contoh file di pexpect memiliki lebih banyak detail dan info, tetapi inilah dasarnya):
Jangan salah paham, SAYA SUKA berharap (terutama autoexpect), tetapi python hanya sangaaaat lebih mudah bagi saya untuk grok.
sumber
Cara yang mungkin paling mudah dan paling bersih untuk ssh ke server, menelurkan shell interaktif dan menjalankan perintah di dalam shell itu adalah membuat file rc kustom untuk bash.
Dalam file bashrc kustom Anda di server, pertama sumber file default dan kemudian tambahkan perintah kustom Anda, misalnya
~ / .bashrc_custom:
Anda kemudian dapat memulai sesi SSH Anda seperti ini:
The
-t
pasukan pilihan alokasi pseudo-tty, sehingga hal-hal seperti pekerjaan tab-selesai.The
--rcfile
menspesifikasikan opsi yang rcfile untuk memuat bukan yang default. Penting: Anda harus meletakkan "argumen dasbor ganda" pada baris perintah sebelum opsi karakter tunggal agar dapat dikenali.The
-i
argumen untuk / bin / bash ada untuk memohon shell interaktif.sumber
Jika ada yang menginginkan informasi tentang apa yang terjadi di latar belakang, Anda harus melihat pada manual sshd:
https://www.freebsd.org/cgi/man.cgi?sshd(8)#LOGIN_PROCESS
sumber
Anda umumnya harus menghindari menggunakan ssh dengan cara seperti ini karena itu mengalahkan tujuan itu.
Lakukan
untuk melihat apakah kunci Anda terdaftar di kumpulan sesi aktif ssh atau tambahkan sendiri (dengan ssh-add).
sumber