Normalde, ssh komutunu böyle iletirseniz,
ssh me@example.com 'some-command.sh'
Etkileşimli olmayan bir oturum elde edersiniz ve ssh, komut (veya komut dosyası ya da her neyse) çalıştırıldığı anda çıkar. Etkileşimli bir oturumu nasıl alabilirim ve yine de yerel makinemden belirttiğim bir komutu çalıştırabilirim. Örneğin, ekranı açıp belirli bir ekran oturumunu yeniden başlatmak istiyorum:
ssh me@example.com 'screen -r 12345'
ancak buna izin verilmez, "Terminale bağlanmalı" hatası verilir. temelde "bu komutu etkileşimli bir kabuktan çağırmalısınız" anlamına geldiğini tahmin ediyorum.
Başka bir örnek olarak, işyerinde bazı şeyleri yapma haklarına sahip olmak için sık sık paylaşılan bir hesap kullanmamı gerektiren bir ton makine kullanıyorum (evet biliyorum: kötü bir fikir ama beni suçlama, o şeyleri ayarlamadım yol), ve genellikle varsayılan kabuk olarak ksh var. Giriş yapmak, bash (veya zsh) 'ya geçmek ve kendi hesabımın .bash_profile (veya .zshrc) kaynağını kullanmak istiyorum. Etkileşimli bir ssh oturumu kurabilir ve oturum açtıktan sonra çalıştırmak için uzaktaki makineye bir komut iletebilirsem bu kolay olurdu .
Yayınlayacağım aklımda olmayan ve çok denenmemiş bir çözümüm var, ancak birinin daha iyi bir yol bildiğini umuyorum.
GÜNCELLEME: Bunu anlamayanlar için, hepsini el ile yapmayı planlamıyorum, bu yüzden etkileşimli bir oturum açmamı ve ardından el ile yapmamı hiçbir şey çözmüyor.
2. GÜNCELLEME: Bir kez daha açıklığa kavuşturmak için: Sunucuda (istemcide programlı olarak belirtilen) komutları (rasgele) çalıştırmaya çalışıyorum, ancak daha sonra bu programatik komutlardan yapılan herhangi bir şeyden etkilenen etkileşimli bir oturum açıyorum.
echo "command" | ssh user@remote_host