โดยปกติถ้าคุณส่งคำสั่งไปยัง ssh อย่างนั้น
ssh me@example.com 'some-command.sh'
คุณจะได้รับเซสชันที่ไม่มีการโต้ตอบและออกจาก ssh ทันทีที่คำสั่ง (หรือสคริปต์หรืออะไรก็ตาม) ถูกเรียกใช้ ฉันจะรับเซสชันการโต้ตอบได้อย่างไรและยังเรียกใช้คำสั่งที่ฉันระบุจากเครื่องท้องถิ่นของฉัน ตัวอย่างเช่นฉันต้องการเปิดหน้าจอและเริ่มเซสชันหน้าจอใหม่:
ssh me@example.com 'screen -r 12345'
แต่ไม่อนุญาตให้ส่งคืนข้อผิดพลาด "ต้องเชื่อมต่อกับเทอร์มินัล" ซึ่งฉันคิดว่าเป็นหลัก "ต้องเรียกคำสั่งนี้จากเปลือกโต้ตอบ"
เป็นอีกตัวอย่างหนึ่งฉันใช้เครื่องจักรจำนวนมากในการทำงานซึ่งมักทำให้ฉันต้องใช้บัญชีที่ใช้ร่วมกันเพื่อมีสิทธิ์ทำบางสิ่ง (ใช่ฉันรู้ว่า: ความคิดที่ไม่ดี แต่ไม่โทษฉัน วิธี) และพวกเขามักจะมี ksh เป็นเปลือกเริ่มต้น ฉันต้องการลงชื่อเข้าใช้สลับไปยัง bash (หรือ zsh) และหา. bash_profile (หรือ. zshrc) บัญชีของฉันเอง นี่จะเป็นเรื่องง่ายถ้าฉันสามารถสร้างเซสชัน ssh แบบโต้ตอบและส่งคำสั่งไปยังเครื่องระยะไกลเพื่อเรียกใช้เมื่อเข้าสู่ระบบ
ฉันมีโซลูชัน kludgey (และยังไม่ทดลอง) ในใจว่าฉันจะโพสต์ แต่ฉันหวังว่าจะมีคนรู้วิธีที่ดีกว่า
UPDATE: สำหรับผู้ที่ไม่ได้ตระหนักถึงสิ่งนี้ฉันไม่ได้วางแผนที่จะทำสิ่งนี้ด้วยมือดังนั้นบอกให้ฉันเปิดเซสชันแบบโต้ตอบและจากนั้นทำด้วยมือไม่ได้แก้ปัญหาอะไรเลย
ปรับปรุงครั้งที่ 2: เพื่อพยายามชี้แจงอีกครั้ง: ฉันพยายามเรียกใช้คำสั่ง (โดยพลการ) บนเซิร์ฟเวอร์ (ระบุโดยโปรแกรมบนไคลเอนต์) แต่เปิดเซสชันแบบโต้ตอบที่ได้รับผลกระทบจากสิ่งใดก็ตามที่ทำโดยคำสั่งแบบโปรแกรมเหล่านั้น
echo "command" | ssh user@remote_host