วิธีการเรียกใช้คำสั่งอัตโนมัติหลังจากออกจาก ssh


10

ฉันจะรันคำสั่งบนโลคัลเทอร์มินัลโดยอัตโนมัติหลังจากออกจากการsshเชื่อมต่อได้อย่างไร มีตะขอหรือเหตุการณ์ที่สามารถจัดการกับสิ่งนี้ได้หรือไม่?

คำตอบ:


13

ยกระดับaliasฟังก์ชั่นหรือดีกว่า

ตัวอย่างเช่น:

ssh () { command ssh "$@"; echo foobar; }

ตอนนี้คุณสามารถเรียกใช้:

ssh mysite

หลังจากที่คุณออกจากsshเซสชันecho foobarจะถูกเรียกใช้

เปลี่ยนecho foobarด้วยคำสั่งจริงที่คุณต้องการเรียกใช้และแน่นอนคุณสามารถใช้หลายคำสั่งได้หากคุณต้องการ

~/.bashrcที่จะทำให้นิยามฟังก์ชันถาวรใส่ไว้ในของคุณ


นอกจากนี้ทราบว่ามันอาจจะไม่เป็นที่ต้องการเสมอที่จะมีฟังก์ชั่นที่มีชื่อเป็นเมื่อคุณต้องการอย่างชัดเจนใช้ภายนอกssh sshในกรณีนั้นคุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อข้ามsshฟังก์ชันเพื่อรับsshไบนารีภายนอก:

command ssh mysite

หรือเปลี่ยนชื่อฟังก์ชั่นเป็นอย่างอื่นเช่นsshfunc:

sshfunc () { ssh "$@"; echo foobar; }

4
หมายเหตุ: ฉันแนะนำให้เปลี่ยนชื่อฟังก์ชั่นเป็นอย่างอื่นที่ไม่ใช่ "ssh" ดังนั้นคุณคงความหมายดั้งเดิมของ ssh ไว้ ... อาจจะ: ssh2? หรือ sshcmd? (มิฉะนั้นคุณสามารถลืมผลข้างเคียงของมันเมื่อทำสิ่งต่าง ๆ เช่น: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzนี้จะผิดเพราะมันจะมี "foobar" ในตอนท้าย ... )
Olivier Dulac

@OlivierDulac จุดดีแก้ไข
heemayl

\ ssh 'ssh' และ "ssh" เท่านั้นยกเว้นนามแฝงคำสั่ง ssh จะเรียกใช้คำสั่ง (หนีทั้งนามแฝงและฟังก์ชั่น)
Olivier Dulac

@OlivierDulac ไม่ทราบว่าได้รับการแก้ไข
heemayl

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