Uzak bilgisayardaki bir dosyayı bir Shell Script kullanarak SSH ile nasıl silebilirim?


32

Bir Shell Script ile uzak bir makinedeki bir dosyayı silmek zorunda kaldığım bir Shell Script yazıyorum.

Elle akış:

ssh username@domain.com

.. sonra etki alanında:

cd ./some/where
rm some_file.war

Bu görevi nasıl başarabilirim?

Yanıtlar:


49

sshİstemciye ssh komutuna ekleyerek bir kabuk başlatmak yerine yürütmek için bir komut iletebilirsiniz .

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

cdTam yolu belirlediğiniz sürece bir şeyi kaldırmak için bir yere gitmeniz gerekmez , böylece atlayabileceğiniz başka bir adım olur.

Sonraki soru kimlik doğrulama. Sadece çalıştırırsanız, bir şifre girmeniz istenir. Bu etkileşimli olarak girmek istemiyorsanız, publickey kimlik doğrulaması ayarlamanız gerekir.


3
-C'nin cipher_spec olduğunu düşünmüştüm - hayır? Komut geçişi için -c'nin gerekli olduğunu düşünmedim.
Scott C Wilson,

Çabuk cevaplar için hepinize teşekkür ederim. Bu cevap çözüme giden parçaların çoğunu içeren cevaptı, bu yüzden @Caleb bu sefer kene aldı.
mico

Biz eklemek gerekir -fiçin rmuzaktan çağrı yürütme?
Fedir RYKHTIK

1
@Hayır NO! Soru, özellikle dizinler olmayan dosyalar hakkında soru sorar rmve kullanıcı ne bekleyeceğini ve neden bir şeyleri geçersiz kıldığını bilmediği sürece, arayan kişiye kesinlikle iletilmelidir. Daha sonra birçok hatadan ve sinir bozucu hata ayıklamadan, yalnızca belirli bir senaryoda ihtiyacınız olan seçenekleri kullanarak önleyebilirsiniz.
Caleb

1
@Fedir Bu -fseçenek için rmkısa seçenek olup , --forcemevcut olmayan dosyalar veya sahte argümanlar için hataların yazılmasının bir etkisi olup olmadığıdır. Genellikle komutlar etkileşimli olmayan mermiler üzerinden daha az etkileşimli olmaktan geçiyor, ancak siz değilsiniz veya etkileşimli bir istekte bulunuyorsunuz, yapmanız gereken şey doğrudan bununla ilgili ayarları düzeltmektir. Bu scripting varsa zaten bu sorunu olmamalıdır ve (eğer felaket yazım hataları olasılığını var) Bir etkileşimli kabukta ise kullanmanız gereken -Iüzerinde --interactive=neveristediğiniz davranışı ayarlayın.
Caleb,

3

Uzak dosyayı sudo kullanarak silmek istiyorsanız, bunun gibi bir şey uygulamanız gerekir:

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

Ayrıntılar .


2

Ssh komutu, uzak komutları çalıştırmak için kullanabileceğiniz bir komut parametresine (komuttaki son parametre) sahiptir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.