SSH LocalCommand เมื่อออกจาก


9

ใน~/.ssh/configคุณสามารถใช้LocalCommandคำสั่งเพื่อดำเนินการคำสั่งท้องถิ่นเมื่อใดก็ตามที่คุณเชื่อมต่อกับเครื่องระยะไกลผ่าน SSH แต่ฉันจะรันคำสั่งได้อย่างไรเมื่อฉันออกจากการเชื่อมต่อ SSH ดูเหมือนว่าไฟล์ * .bashrc / .bash_profile * จะไม่ได้รับการจัดหาเมื่อการเชื่อมต่อสิ้นสุดลงหรือถูกปิด


คำถามนี้เกี่ยวข้องกับunix.stackexchange.com/questions/40830/…
Bananguin

คำตอบ:


11

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

หากคุณต้องการดำเนินการบนเครื่องระยะไกลให้ดูที่~/.bash_logoutจะดำเนินการเมื่อเปลือกเข้าสู่ระบบออกจากระบบอย่างสง่างาม จากman bash:

เมื่อล็อกอินเชลล์ออก bash จะอ่านและดำเนินการคำสั่งจากไฟล์~/.bash_logoutหากมีอยู่

คุณสามารถทำการทดสอบ~/.bash_logoutเพื่อตรวจสอบว่าเชลล์ที่ถูกล็อกเอาต์เป็นเซสชั่น SSH หรือไม่สิ่งต่อไปนี้ควรใช้งานได้:

if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
    # commands go here
fi

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

ssh() {
    if command ssh "$@"; then
        # commands go here
    fi
}

นั่นอาจจะง่ายเกินไปสำหรับความต้องการของคุณ แต่คุณได้รับความคิด


ฉันต้องการคำสั่งที่จะดำเนินการบนเครื่องท้องถิ่น ขอบคุณสำหรับคำแนะนำ มันทำงานได้อย่างราบรื่น
Roberto Aloi

1

คุณอยู่ในเส้นทางที่ถูกต้อง หากsshเซสชั่นเป็นเปลือกเข้าสู่ระบบ (แทนคำสั่งระยะไกล) bashจะมา/etc/bash.logoutและ~/.bash_logoutเมื่อคุณออกจากเปลือก

หากคุณต้องการรันคำสั่งระยะไกลจากนั้นคุณสามารถบังคับbashให้เป็นเปลือกเข้าสู่ระบบ LocalCommandอาจจะคล้ายกับนี้:

bash -l -c /execute/some/command

จาก man 1 bash

-c string   If  the  -c  option  is  present, then commands are read from 
string.  If there are arguments after the string, they are assigned to 
the positional parameters,  starting with $0.
-l   Make bash act as if it had been invoked as a login shell 

When  a login shell exits, bash reads and executes commands from the 
files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.

1
ไม่ใช่ถ้าดำเนินการคำสั่งระยะไกล (หากระบุคำสั่งไว้คำสั่งนั้นจะถูกเรียกใช้งานบนโฮสต์ระยะไกลแทนเชลล์ล็อกอิน) อย่างไรก็ตามการอ่านคำถาม OP อย่างใกล้ชิดดูเหมือนว่าเขาต้องการสิ่งที่เกิดขึ้นในพื้นที่ดังนั้นฉันคิดว่าคำตอบของคุณเหมาะสมกว่า
George M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.