ถ่ายโอนการตั้งค่าเชลล์ไปยังเซสชัน ssh จากระยะไกลชั่วคราวหรือไม่


0

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

มีวิธีที่จะทำในปัจจุบันหรือมันจะต้องมีโซลูชันที่กำหนดเองของฉันเขียนฟังก์ชันนี้ด้วยตัวเอง? ฉันไม่เห็นตัวเลือกที่แท้จริงใด ๆ เพื่อให้บรรลุสิ่งนี้

คำตอบ:


2

คุณไม่ต้องเขียนมากนัก (แค่เชลล์สคริปต์) เครื่องมือมีอยู่แล้ว ใช้มันเพื่อส่งออกเฉพาะสิ่งที่คุณต้องการเพื่อหลีกเลี่ยงภาระในการแก้ไขฟังก์ชันเชลล์ของผู้อื่น

(set; alias) |
ssh -l root 10.3.0.8 'mkdir ~/tmp 2>/dev/null; cat > ~/tmp/.import'

นี่ไม่ใช่ความล้มเหลวดังนั้นคุณควรลองใช้เอาต์พุตจนกว่าคุณจะคิดว่ามันทำงานได้อย่างถูกต้อง

(set; alias) > ~/tmp/import
bash -n tmp/import

tmp/import: line 6085: syntax error near unexpected token `('
tmp/import: line 6085: `        !(?(*/)python*([0-9.])|-?))'

นี่เป็นปัญหาที่น้อยกว่ากับตัวแปรสภาพแวดล้อมเท่านั้นเนื่องจากรูปแบบการแยกวิเคราะห์ง่ายต่อการบังคับใช้:

env | sed -Ee "
      s/'/\\\\'/g;
      s/=(.*)/='\1'/
      " > tmp/export.vars-only

และการส่งออกเฉพาะฟังก์ชันของคุณสามารถทำได้เช่นนั้น

declare -f `grep  ^function ~/.functions | awk '{print $2}'`

หากคุณใช้moo() { true;}ไวยากรณ์เพื่อประกาศพวกเขาหรือรูปแบบของมันคุณสามารถลองgrep -Eoe '^\w+' ~/.functions


1

ขึ้นอยู่กับสิ่งที่คุณต้องการมีหลายวิธี

  1. หากคุณมีการควบคุมการกำหนดค่าเซิร์ฟเวอร์ openssh คุณสามารถตั้งค่า AcceptENV บนเซิร์ฟเวอร์จากนั้น SendENV ในไคลเอนต์จะส่งตัวแปรสภาพแวดล้อมเฉพาะ

  2. หากยังไม่เพียงพอและคุณใช้การตรวจสอบคีย์คุณสามารถใช้รายการ authorized_keys เพื่อเรียกใช้คำสั่งเฉพาะเช่นการโหลดไฟล์การตั้งค่าที่คุณถ่ายโอนแล้ว

  3. หากไม่ได้ผลกับคุณคุณจะต้องตัดคำสั่ง / สคริปต์ของคุณด้วย wrapper ที่ตั้งค่าสภาพแวดล้อมของคุณ


0

ฉันเกรงว่าคุณจะต้องเขียนสิ่งที่กำหนดเอง .... บางสิ่งบางอย่างตามคำสั่ง cp อย่างง่ายสำหรับไดเรกทอรีและไฟล์ที่เกี่ยวข้อง

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