Apakah mungkin untuk menulis skrip bash, itu
- akan dimulai dari mesin A, masuk pada mesin B berbeda dengan ssh (kedua mesin A dan B akan menjadi Linux-Machines),
- menyalin beberapa file ke mesin B
- menjalankan skrip python skrip python yang diberikan pada mesin ini.
- mentransfer hasilnya kembali ke mesin A
- log off dari mesin B.
Apakah ini bisa dilakukan secara teknis?
bash
ssh
shell-script
Aufwind
sumber
sumber
cat file | ssh user@host 'cat > /destination/of/file; /path/to/script &>/dev/null; cat results' > /destination/of/results
ControlMaster=yes
danControlPath=/path/to/socketfile
, dan kemudian memulai satu koneksi ssh dengan-f
menjalankan ssh latar belakang. Beri tahu semua koneksi SSH berikutnya untuk menggunakan file soket yang sama.Saya dapat melakukan semuanya dalam satu
ssh
koneksi / sesi:Ini:
local_src
keremote_dst
,command
,remote_src
kelocal_dst
.Tetapi jika
command
menulisstdout
, hasilnya juga masuklocal_dst
. Jikacommand
membaca input daristdin
, ia akan menerima danEOF
.sumber
Meskipun Anda dapat melakukan ini di dalam satu sesi ssh, agak sulit untuk menggabungkan menyalin file dengan menjalankan perintah.
Cara termudah untuk mengatasi tugas ini adalah menjalankan sesi SSH terpisah untuk tiga operasi:
Ini membutuhkan otentikasi ke mesinB tiga kali. Cara yang disarankan untuk menghindari otentikasi berkali-kali adalah dengan menggunakan fasilitas berbagi koneksi dalam versi modern OpenSSH: mulai koneksi master ke B sekali dan untuk semua, dan biarkan SSH secara otomatis membonceng ke koneksi master. Tambahkan
ControlMaster auto
danControlPath
garis ke Anda~/.ssh/config
, kemudian mulai koneksi master di latar belakang, kemudian lakukan tugas Anda.Daripada menggunakan scp atau rsync untuk menyalin file, mungkin lebih mudah untuk memasang sistem file jarak jauh di bawah SSHFS . Ngomong-ngomong, ini akan mengatur koneksi master (dengan anggapan Anda telah mengatur koneksi
~/.ssh/config
seperti yang ditunjukkan di atas).sumber