SSH'ye giriş yapmak ve programı çalıştırmak için tek komut?


58

SSH üzerinden uzak bir sunucuya giriş yapmak ve uzak oturum açma kabuğu üzerinde bir program çalıştırmak için tek bir komut yapılandırmanın bir yolu var mı?

OpenSSH el kitabında, "Komut belirtilirse, bir giriş kabuğu yerine uzak ana bilgisayarda yürütülür." Örneğin, ssh user@server mailuzak sunucuya giriş yapar, posta kutusu durumunu görüntüler ve ardından sizi yerel kabuğa döndürür. Posta durumunu görüntüledikten sonra uzak kabukta kalmanın bir yolu var mı?

Ayrıca, ssh user@server [command]komut bir programsa, örneğin vim veya mutt ise işe yaramaz. Uzak kabukta oturum açmanın ve program sırasında uzak kabukta kalırken bir programı çalıştırmanın ve programdan çıktıktan sonra, yalnızca belirli bir logoutkomuttan çıktıktan sonra (normal bir SSH oturumunda olduğu gibi) bir yol var mı?

Sonunda yerel .bashrc'de bir takma ad gibi bir komutu koyabilmek istiyorum, böylece istendiğinde hızlı bir şekilde çalıştırılabilir. Bir örnek, SSH üzerinden uzak bir sunucuya giriş yapmak ve e-posta okumak veya göndermek için uzak sunucudaki mutt'u açmak olabilir.


Posta durumunu görüntüledikten sonra uzaktaki kabukta kalmak derken ne demek istiyorsunuz? Bu mail komutunu çalıştırdıktan sonra ssh yapmaya eşdeğer olmaz mıydı ssh remote@server mail ; ssh remote@server? Ayrıca bir terminale ihtiyaç duyan herhangi bir uzaktan çalıştırma komutu hayatta kalmayacak / ssh üzerinden çalışmayacak mı?
MKC

Bu, komutu çalıştırmak ve sonra uzak kabuğu almak için işe yarıyor gibi görünüyor, ancak bunu bir SSH bağlantısı açıp komutu çalıştırıp SSH bağlantısını kapatıp ardından başka bir SSH bağlantısını açarak yapıyor. Bunları tek bir ilk bağlantı ile yapmanın bir yolu var mı? Ayrıca, bu hala komutun bir programı çalıştırmasını sağlamaz.
user981178 16:14

Yanıtlar:


90

Denediniz mi ssh -t user@server "mail && bash"(veya bashsevdiğiniz kabukla değiştirin )?

-tBash etkileşimli bir kabuk olarak kullanımı için bir sözde TTY oluşturmak için gereklidir.


1
Her ne kadar, itiraf edeyim, muhtemelen sadece muttbir tmuxveya screendaha fazla koşmayı tercih ederdim ve sonra istediğimde ekleyip yeniden bağlayabilirim, artı istediğim kadar ilave mermi çalıştırabilirim.
jsbillings

1
Bu komutla çeşitli davranışlar buluyorum. Yukarıdaki gibi kullanıldığında (cevapta), yine de yalnızca posta kutusu durumunu gösterir ve ardından oturumu kapatır, ancak şimdi bağlantının kapalı olduğunu da gösterir. Yukarıdaki gibi kullanılır, ancak örneğin posta yerine nano ile, bir nano oturumu açar ve daha sonra çıktıktan sonra exitbunun yerine çıkarılması gereken uzak bash kabuğuna döner logout. Bunu henüz mutt (veya benzeri) ile test edemiyorum.
user981178 16:14

Bu -tseçenek herhangi bir güvenlik kaygısı doğuruyor mu? Bunu daha önce kullanmamıştım.
user981178 16:14

Bildiğim kadarıyla herhangi bir güvenlik kaygısı yaratmıyor. Değiştirmekte denediniz &&bir ile ;?
brm

Sıfır olmayan bir çıkış durumuyla çıkan herhangi bir komut, ikinci komutun kabuk mantığı nedeniyle çalışmamasına neden olur.
jsbillings
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.