คำสั่งเดียวเพื่อเข้าสู่ระบบ SSH และเรียกใช้โปรแกรม?


58

มีวิธีการโครงสร้างคำสั่งเดียวเพื่อเข้าสู่ระบบผ่าน SSH ไปยังเซิร์ฟเวอร์ระยะไกลและเรียกใช้โปรแกรมบนเปลือกเข้าสู่ระบบระยะไกลหรือไม่?

ในคู่มือ OpenSSH จะอ่านว่า "หากระบุคำสั่งไว้คำสั่งจะถูกดำเนินการบนรีโมตโฮสต์แทนเชลล์ล็อกอิน" ตัวอย่างเช่นssh user@server mailจะเข้าสู่เซิร์ฟเวอร์ระยะไกลแสดงสถานะกล่องจดหมายจากนั้นกลับสู่เชลล์ภายในเครื่อง มีวิธีที่จะอยู่บนเปลือกระยะไกลหลังจากการแสดงสถานะจดหมายหรือไม่?

นอกจากนี้ssh user@server [command]ดูเหมือนว่าจะไม่ทำงานหากคำสั่งเป็นโปรแกรมเช่น vim หรือ mutt มีวิธีการล็อกอินเข้าสู่ remote shell และรันโปรแกรมในขณะที่อยู่ใน remote shell ในระหว่างโปรแกรมและหลังจากออกจากโปรแกรมในที่สุดก็ออกจากlogoutคำสั่งเฉพาะเท่านั้น(เหมือนในเซสชัน SSH ปกติ)?

ในที่สุดฉันก็ต้องการที่จะสามารถวางคำสั่งดังกล่าวเป็นนามแฝงใน. bashrc ในพื้นที่เพื่อให้มันสามารถทำงานได้อย่างรวดเร็วเมื่อต้องการ ตัวอย่างจะเข้าสู่ระบบผ่าน SSH ไปยังเซิร์ฟเวอร์ระยะไกลและเปิด mutt บนเซิร์ฟเวอร์ระยะไกลเพื่ออ่านหรือส่งอีเมล


คุณหมายถึงอะไรเมื่ออยู่ที่เปลือกระยะไกลหลังจากแสดงสถานะจดหมาย ไม่ว่าจะเป็นเทียบเท่ากับการทำ SSH หลังจากใช้คำสั่งอีเมล: ssh remote@server mail ; ssh remote@server? นอกจากนี้คำสั่งที่ดำเนินการจากระยะไกลที่ต้องการเทอร์มินัลจะไม่รอด / ทำงานได้ใช่มั้ย?
mkc

ดูเหมือนว่าจะทำงานเพื่อเรียกใช้คำสั่งแล้วรับเชลล์ระยะไกล แต่ทำได้โดยเปิดการเชื่อมต่อ SSH หนึ่งครั้งและเรียกใช้คำสั่งและปิดการเชื่อมต่อ SSH แล้วเปิดการเชื่อมต่อ SSH อื่น มีวิธีใดบ้างที่ทำได้ทั้งหมดด้วยการเชื่อมต่อครั้งแรก? นอกจากนี้ยังไม่เปิดใช้งานคำสั่งเพื่อเรียกใช้โปรแกรม
user981178

คำตอบ:


90

คุณเคยลองssh -t user@server "mail && bash"(หรือแทนที่bashด้วยเชลล์อะไรก็ได้ที่คุณชอบ)?

-tเป็นสิ่งที่จำเป็นในการสร้างหลอก TTY สำหรับทุบตีที่จะใช้เป็นเปลือกโต้ตอบ


1
แม้ว่าฉันจะยอมรับว่าฉันอาจต้องการที่จะทำงานmuttภายในtmuxหรือscreenจากนั้นฉันสามารถแนบและใส่กลับเข้าไปใหม่ได้ตามต้องการรวมทั้งฉันสามารถเรียกใช้เชลล์เพิ่มเติมได้มากเท่าที่ฉันต้องการ
jsbillings

1
ฉันกำลังค้นหาพฤติกรรมที่หลากหลายด้วยคำสั่งนี้ ใช้ตามข้างบน (ในคำตอบ) มันยังคงแสดงสถานะของกล่องจดหมายเท่านั้นจากนั้นออกจากระบบ แต่ตอนนี้ยังแสดงว่าการเชื่อมต่อถูกปิด ใช้เป็นข้างต้น แต่ด้วยนาโนสำหรับตัวอย่างเช่นแทนที่จะอีเมลจะเปิดเซสชั่นนาโนและจากนั้นเมื่อออกไม่กลับไปที่เปลือกทุบตีระยะไกลซึ่งจากนั้นจะต้องมีการออกกับแทนexit logoutฉันยังไม่สามารถทดสอบด้วย mutt (หรือคล้ายกัน)
user981178

ที่ไม่-tตัวเลือกการเรียงลำดับของการผลิตกังวลด้านความปลอดภัยใด ๆ ฉันไม่เคยใช้มันมาก่อน
user981178

เท่าที่ฉันรู้ -t ไม่แนะนำข้อกังวลด้านความปลอดภัยใด ๆ คุณเคยลองแทนที่&&ด้วย;?
brm

คำสั่งใด ๆ ที่ออกโดยมีสถานะออกไม่เป็นศูนย์จะทำให้คำสั่งที่สองไม่ทำงานเนื่องจากตรรกะของเชลล์
jsbillings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.