ปิดเซสชัน ssh เมื่อสิ้นสุดสคริปต์ทุบตี


0

ใน. profile ของผู้ใช้แต่ละคนของระบบ (debian 8) ฉันเรียกสคริปต์ที่เริ่มเซสชัน typescript เพื่อบันทึกทุกอย่างในไฟล์:

#!/bin/bash

script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log

สิ่งนี้คือเมื่อคุณป้อน "exit" จากนั้นคุณเพียงหยุดเซสชัน typscrit ไม่ใช่การเชื่อมต่อ ssh ดังนั้นคุณต้องป้อน exit อีกครั้ง ฉันต้องการปิดการเชื่อมต่อ ssh เมื่อเราออกจาก typescript โดยป้อน "exit" ฉันลองสิ่งที่แตกต่าง:

ในตอนท้ายของสคริปต์ของฉัน:

exit
or
logout
or 
$(logout)

ทั้งหมดนี้กลับข้อผิดพลาดหลังจากออก typescript ตัวอย่างเช่นด้วยlogoutหรือ$(logout):

/pathtoscript/log.sh: 9: /pathtoscript/log.sh: logout: not found

แต่มันเป็นคำสั่งของระบบดังนั้นฉันแค่ต้องรันมันในระบบเมื่อสิ้นสุดสคริปต์และนั่นก็น่าจะดี!

ใน. bashrc:

function exit() { builtin exit && exit; }

ไม่มีสิ่งใดผนวกกับฟังก์ชั่นนี้เมื่อฉันกด "exit" ตัวพิมพ์หยุด แต่ไม่ใช่เซสชัน ssh

คำตอบ:


1

สิ่งของของคุณไม่ทำงานตามที่คุณต้องการ แต่อย่างที่คุณบอก:

.profile มาจากเปลือกของคุณเหมือนกับที่คุณพิมพ์อักขระแต่ละตัวด้วยมือ หากคุณรันสคริปต์หรือโปรแกรมอื่น ๆ ในเชลล์คุณคาดว่าจะกลับไปที่พรอมต์ของคุณทันทีที่เสร็จสิ้น นี่คือสิ่งที่คุณกำลังประสบอยู่

คุณสามารถใส่การออกใน. profile ของคุณและมันจะออกราวกับว่าคุณได้พิมพ์ลงในเชลล์แบบโต้ตอบ โปรไฟล์ของคุณอาจมีลักษณะเช่นนี้แล้ว:

# ... whatever comes before
script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log
exit

มีความสุขในการเข้าสู่ระบบของผู้ใช้ของคุณ!


ขอบคุณมันทำงานอย่างนั้น นี่คือประโยชน์ในการตรวจสอบสิ่งที่นักเรียนของฉันทำ!
poka

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