Bagaimana cara menghapus file pada mesin jarak jauh melalui SSH dengan menggunakan Shell Script?

32

Saya menulis Script Shell di mana saya harus menghapus file pada mesin jarak jauh melalui Shell Script.

Mengalir secara manual:

ssh username@domain.com

.. lalu di domain:

cd ./some/where
rm some_file.war

Bagaimana cara menyelesaikan tugas itu?

mico
sumber

Jawaban:

49

Anda bisa memberikan sshperintah pada klien untuk dijalankan sebagai ganti shell dengan menambahkannya ke perintah ssh.

ssh username@domain.com 'rm /some/where/some_file.war'

Anda tidak perlu ke cdlokasi untuk menghapus sesuatu selama Anda menentukan path lengkap, jadi itulah langkah lain yang bisa Anda lewati.

Pertanyaan selanjutnya adalah otentikasi. Jika Anda menjalankannya, Anda akan dimintai kata sandi. Jika Anda tidak ingin memasukkan ini secara interaktif, Anda harus mengatur otentikasi publickey.

Caleb
sumber
3
Saya pikir -c adalah cipher_spec - bukan? Saya tidak berpikir -c diperlukan untuk melewati perintah.
Scott C Wilson
Terima kasih semuanya atas jawaban cepat. Jawaban ini adalah yang berisi sebagian besar bagian untuk solusi sehingga @Caleb mendapat centang saat ini.
mico
Haruskah kita tambahkan -fke rmmengeksekusi panggilan jarak jauh?
Fedir RYKHTIK
1
@ Feder TIDAK! Pertanyaannya secara khusus menanyakan tentang file bukan direktori dan jika ada peringatan atau kesalahan yang dilemparkan oleh rmmereka tentu harus diteruskan ke penelepon kecuali pengguna tahu apa yang diharapkan dan mengapa mereka menimpa sesuatu. Banyak kesalahan dan debug yang frustasi nantinya dapat dihindari dengan hanya menggunakan opsi yang Anda butuhkan di senario tertentu.
Caleb
1
@ Feded -fPilihan untuk rmkependekan --forcedan memiliki efek apakah kesalahan dipalsukan untuk file yang tidak ada atau argumen palsu. Biasanya perintah dijalankan di atas non-shell interaktif default menjadi kurang interaktif, tetapi Anda tidak atau Anda mendapatkan prompt interaktif hal yang harus dilakukan adalah memperbaiki pengaturan yang terkait langsung dengan itu. Jika Anda scripting ini Anda tidak harus memiliki masalah itu pula, dan jika Anda berada di shell interaktif (di mana Anda memiliki kemungkinan kesalahan ketik bencana) Anda harus menggunakan -Ipada --interactive=neveruntuk mengatur perilaku yang Anda inginkan.
Caleb
3

Jika Anda ingin menghapus file jarak jauh dengan menggunakan sudo, Anda perlu menjalankan sesuatu seperti ini:

ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)

Detail .

Vladislav Rastrusny
sumber
2

Perintah ssh memiliki parameter perintah (parameter terakhir dalam perintah) yang dapat Anda gunakan untuk menjalankan perintah jarak jauh.

Scott C Wilson
sumber