วิธีนำ. vimrc ไปรอบ ๆ เมื่อฉัน SSH


34

งานของฉันมีแนวโน้มที่จะเกี่ยวข้องกับการใช้ SSH เพื่อเชื่อมต่อกับเครื่องต่าง ๆ จากนั้นใช้เสียงเรียกเข้าเพื่อแก้ไขไฟล์ในเครื่องเหล่านั้น ปัญหาคือฉันต้องคัดลอกไฟล์. vimrc ของฉันตลอดเวลา มันน่ารำคาญมากที่จะเปิดเป็นกลุ่มและไม่มีการตั้งค่าใด ๆ เป็นไปได้หรือไม่ที่จะพกพาการตั้งค่า vim ของฉันไปกับฉันจากเครื่องหนึ่งไปอีกเครื่องหนึ่งโดยไม่ต้องคัดลอกด้วยตนเองทุกที่?


@ duffbeer703: ใช่เหมือนset background=darkหรือset background=lightอะไรบางอย่างที่ไม่มีลินุกซ์สัมผัสการจัดจำหน่ายและเป็นสมบูรณ์ไม่สร้างความรำคาญให้กับผู้ใช้ </
sarcasm

โดยไม่ต้องอ่านคำตอบฉันรู้สึกว่ามันเป็นไปได้ในทางทฤษฎีเนื่องจาก ssh-agent และ x- เทอมสามารถถ่ายโอนไปได้ แต่ในทางกลับกันผู้ที่จัดการโดย ssh โดยเฉพาะ & ฉันคิดว่ามีวิธีแก้ไขหลายวิธีในการจัดการคดีขอบบ้า .
trysis

คำตอบ:


24

ฉันรู้สึกถึงความเจ็บปวดของคุณ. ฉันมีไฟล์ rc ~ /.* ทั้งหมดภายใต้การควบคุมเวอร์ชัน (การโค่นล้ม) ทำงานได้ดีมากตั้งแต่ฉันเริ่มใช้ในปี 1998 โดยใช้ CVS วิธีหนึ่งในการทำคือตรวจสอบไฟล์ rc ทั้งหมดของคุณเมื่อคุณอยู่ในโฮมไดเร็กตอรี่ของคุณ:

svn co svn+ssh://user@host/path/to/repo/trunk/home/user .
A    .signature
A    .vimrc
A    .bashrc
A    .screenrc
A    .psqlrc
[...]
Checked out revision 7645.

วิธีนี้ไฟล์การกำหนดค่าจะถูกซิงค์และอัปเดตผ่านคอมพิวเตอร์หลายเครื่องเมื่อคุณเรียกใช้การอัปเดต svn


3
ฉันเดาว่านี่ดีเท่าที่จะได้รับ เคล็ดลับคือฉันต้องตั้งค่าพื้นที่เก็บข้อมูลบนเครื่องที่สามารถเข้าถึงได้จากเครื่องอื่น ๆ ทั้งหมด ด้วยโครงสร้างเครือข่ายที่ปลอดภัยนั้นไม่ใช่เรื่องง่ายเสมอไป
Apreche

ฉันเริ่มทำสิ่งนี้เมื่อเร็ว ๆ นี้มันวิเศษมาก ฉันไม่รู้ว่าฉันรอดชีวิตมาได้อย่างไรหากปราศจากมัน
richo

5
อาจจะใช้คอมไพล์หรือระบบควบคุมเวอร์ชันกระจายอื่น ๆ ในกรณีนี้ก็เพียงพอที่จะเข้าถึงเครื่องที่มีไฟล์เช็คเอาต์
ptman

44

แทนที่จะนำ. vimrc ไปยังเซิร์ฟเวอร์แต่ละเครื่องที่คุณต้องใช้งานทำไมไม่แก้ไขไฟล์ระยะไกลจาก vim ในเครื่องของคุณ:

ใน vim / gvim ให้รัน:

:e scp://remoteuser@server.tld//path/to/document

หรือเริ่มเป็นกลุ่มเช่นนี้:

vim scp://remoteuser@server.tld//path/to/document

สิ่งนี้จะเปิดไฟล์ที่อยู่ในตำแหน่ง (จริง ๆ แล้วจะเป็นการคัดลอกไฟล์ในเครื่อง) และเมื่อคุณบันทึกไฟล์จะส่งไฟล์ที่แก้ไขกลับไปยังเซิร์ฟเวอร์ให้คุณ

มันขอรหัสผ่าน ssh แต่สิ่งนี้สามารถปรับปรุงได้ผ่านทางคีย์ ssh

ดังที่คนอื่น ๆ ได้กล่าวถึงข้อเสียเปรียบเพียงอย่างเดียวของวิธีนี้คือคุณไม่ได้รับความสามารถในการกำหนดพา ธ / ไฟล์เช่นเดียวกับเมื่อทำงานบนเครื่องโดยตรง

สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบกวดวิชาดังต่อไปนี้


+1 สำหรับคำแนะนำ scp: // แต่ฉันคิดว่าวิธีนี้อาจยุ่งยากเล็กน้อยหากคุณต้องการคัดลอกเส้นทางทุกครั้งที่คุณแก้ไขไฟล์
chmeee

1
ใช่มันยุ่งยากเกินไป ฉันต้องทำ poking มากมายรอบ ๆ เครื่องระยะไกลเพื่อค้นหาไฟล์ที่ฉันต้องการและมักจะต้องแก้ไขด้วยสิทธิ์ sudo
Apreche

+1 สิ่งนี้ใช้ได้ดีสำหรับฉัน ขอบคุณ :)
Darragh Enright

มีหลายกรณีที่คุณต้องลงชื่อเข้าใช้เซิร์ฟเวอร์หลัก (login.example.com) จากนั้นลงชื่อเข้าใช้เซิร์ฟเวอร์ท้องถิ่น (top.secret.example.com)
puk

มันทำงานได้ดีถ้าคุณเมาท์โครงสร้างไฟล์ระยะไกลลงในไดเรกทอรีภายในเครื่องของคุณตัวอย่างเช่นกับ fusermount
relet

18

คุณสามารถสร้างสคริปต์ทุบตีเพื่อคัดลอกโดยอัตโนมัติทุกครั้งที่คุณเข้าสู่ระบบเช่นนี้

#!/usr/bin/env bash

scp ~/.vimrc $1:
ssh $1

คุณสามารถเรียกมันว่า ssh_vim เป็นต้น มันไม่ใช่ทางออกที่ดี แต่จะแก้ปัญหาของคุณ

คุณสามารถปรับปรุงให้ตรวจสอบก่อนว่ามีอยู่แล้ว หากคุณไม่ได้ใช้งาน ssh จากเครื่องเดียวกันทุกครั้งคุณสามารถเปลี่ยนสคริปต์เพื่อรับไฟล์จาก scp จากเครื่องอื่น

EDIT1

ในหมายเหตุที่เกี่ยวข้องคุณสามารถเมาต์ระบบไฟล์ของเครื่องระยะไกลด้วย sshfs ด้วยวิธีนี้คุณจะได้รับประโยชน์จากสภาพแวดล้อมและเครื่องมือของคุณ (ไม่เพียง แต่. vimrc) และคุณมีเชลล์ที่สมบูรณ์ (ซึ่งคุณไม่ได้ใช้ scp: //)

EDIT2

ฉันเพิ่งพบว่าคุณสามารถแหล่งไฟล์. vimrc ของคุณโดยใช้ scp: // เช่นนี้

:source scp://you@your_computer//yourpath/.vimrc

มันใช้งานได้จากบรรทัดคำสั่ง vim แต่ในตอนนี้ฉันไม่รู้วิธีการทำให้เป็นอัตโนมัติ ดูเหมือนว่าจะใช้งานไม่ได้กับสวิตช์ '-u' หรือใน. vimrc หรือกับ $ VIMINIT

edit3

เจอแล้ว! คุณสามารถทำสิ่งนี้เพื่อเริ่มเป็นกลุ่มด้วย. vimrc ที่นำมาจากโฮสต์อ้างอิงของคุณ:

vim -c ':source scp://you@your_computer//yourpath/.vimrc'

ตัวเลือก '-c' ดำเนินการคำสั่งทันทีหลังจากเรียกใช้ vim

คุณสามารถสร้างนามแฝงในเชลล์ที่คุณเลือกเพื่อหลีกเลี่ยงการพิมพ์ ในทุบตีมันจะเป็นเช่นนี้:

alias vim="vim -c ':source scp://you@your_computer//yourpath/.vimrc'"

2
นี้จะทำงานเฉพาะถ้าคอมพิวเตอร์ที่คุณกำลัง ssh'ing เข้าสามารถเชื่อมต่อกลับไปยังคอมพิวเตอร์ที่คุณกำลัง ssh'ing จาก นี่ไม่ใช่กรณีเสมอไปตัวอย่างเช่นหากคอมพิวเตอร์ของคุณอยู่หลัง NAT
trysis

10

หากคุณใช้การรับรองความถูกต้องของรหัสสาธารณะคุณสามารถใช้สิ่งนี้ใน~/.ssh/config:

Host *
   PermitLocalCommand yes
   LocalCommand bash -c 'scp -P %p %d/.vimrc %u@%n: &>/dev/null &'

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


นี่คือสิ่งที่ดีที่สุด. สำหรับผมผมต้องเปลี่ยน%u@%n:ไป%r@%n:เพราะแตกต่างจากชื่อผู้ใช้ SSH ชื่อผู้ใช้แล็ปท็อปของฉัน
Moshe

4

โซลูชันสองข้อ:

1) สร้างการแชร์ NFS สำหรับโฟลเดอร์บ้านของคุณและแมปไว้ในหลาย ๆ ที่

2) สร้างสคริปต์ขนาดเล็กเพื่อส่ง. vimrc ของคุณไปยังเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อด้วยไฟล์รหัสประจำตัว / คีย์ มันอาจมีลักษณะเช่นนี้ (pseudocode):

connectString = arg0  #username@ipaddress

scp -i ~/.ssh/indentity connectString:~/ ~/.vimrc
ssh -i ~/.ssh/indentity connectString

1
ปุ่ม ssh จะแก้ปัญหารหัสผ่านที่ธรรมดา
LiraNuna

เครื่องมือใดที่คุณจะใช้เพื่อสร้างการแชร์ NFS
Wadih M.

@LiraNuna - ดูเหมือนว่าคุณจะจับฉันก่อนที่ฉันจะมีเวลา 'duh' และแก้ไขโพสต์ของฉัน @Wadih - NFSD มักจะติดตั้งบนระบบ 'nix โดยค่าเริ่มต้น นอกจากนี้คุณยังสามารถกำหนดใช้ร่วมกัน NFS ตามค่าเริ่มต้น (ปกติ) ได้เช่นกัน
moshen

1
NFS ร่วมกันเป็นความคิดที่ดี แต่มีแนวโน้มที่จะวิ่งเข้าไปในความสามารถ จำกัด ในการปรับใช้สิ่งต่าง ๆ โดยเฉพาะอย่างยิ่งในสภาพแวดล้อม firewalled หรือสถานที่ที่คุณไม่ต้องการที่จะปรับเปลี่ยนเซิร์ฟเวอร์การผลิต (โดยเฉพาะอย่างยิ่งกับ NFS)
ericslaw

คุณถูกต้อง ericslaw ฉันสมมุติว่านี่เป็นเครื่องหลายเครื่องในเครือข่ายเดียว
moshen

4

คำตอบเดียวกับ sunny256 แต่ใช้ git แทน SubVersion

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

ด้วยวิธีนี้คุณสามารถมีไฟล์เดียวกันเกือบทั้งหมดในคอมพิวเตอร์ส่วนใหญ่และยังไม่สับสน


+1 คำถามเล็ก ๆ : ฉันสงสัยว่ามันจะดีกว่าถ้าใช้คำจำกัดความภายนอกสำหรับไฟล์ทั่วไปในการโค่นล้ม? วิธีนี้คุณสามารถมีพวกเขาในที่เดียวและดึงไปที่สาขาใดก็ได้
ยูจีนยาร์มาช

3

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

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

นอกจากนี้ยังมีประโยชน์เพิ่มเติมของความสามารถในการใช้คลิปบอร์ดของระบบ


2

ฉันใช้https://github.com/andsens/homeshickเพื่อจัดการดอทไฟล์ของฉันและเก็บไว้ใน GitHub

Homeshick เขียนด้วย bash 100% และช่วยให้คุณจัดการ "ปราสาท" ซึ่งเป็น repos คอมไพล์ที่มีไดเรกทอรี / home / มีคำสั่งให้ย้ายไฟล์ dot ที่มีอยู่ไปยัง repo และแทนที่ด้วย symlink และเพื่อเชื่อมโยงไฟล์ทั้งหมดใน repo เข้ากับโฮมไดเร็กตอรี่ของคุณบนเครื่องใหม่

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


คุณสามารถเพิ่มข้อมูลจากลิงค์ได้ไหม? นั่นจะช่วยปรับปรุงคำตอบและให้ข้อมูลหากลิงก์หยุดพัก
เดฟ M

1
ฉันอธิบายการดำเนินการและการใช้เหตุผลบางอย่าง ฉันไม่เห็นคุณค่าในการคัดลอกเอกสาร
Aaron McMillin

1

หากคุณเป็นเหมือนฉันและมีเครื่องจักรพัฒนามากมาย (Virtual Machines เช่นกัน) ด้วยเหตุผลหลายประการคุณสามารถรวมคีย์ ssh, bash_profile อัจฉริยะและ RCS ที่คุณเลือก

ฉันจะใช้ nfs / samaba / sshfs เป็นครั้งที่สอง สิ่งหนึ่งที่ควรคำนึงถึงคือหากคุณไม่มีเครือข่ายเข้าถึงตลอดเวลาคุณไม่สามารถเข้าถึงสิ่งที่คุณต้องการได้ (บินได้ไม่มี wifi ไฟร์วอลล์ปัญหาการกำหนดเส้นทาง ฯลฯ ) เครื่องที่ฉันซิงค์อยู่นั้นไม่สามารถเข้าถึงได้ทั้งหมดในเวลาเดียวกัน แต่ฉันต้องการแบ่งปันข้อมูลระหว่างกัน

ต่อไปนี้เป็นวิธีที่ฉันไปเกี่ยวกับมันยืมความคิดมากมายจากอินเทอร์เน็ต

.bash_profile อาจมีลักษณะเช่นนี้

$HOME/bin/shell_ssh_agent

ฉันได้รับสิ่งนี้จากสถานที่สองแห่ง แต่ไม่สามารถหาลิงก์ได้ในตอนนี้ ไฟล์ shell_ssh_agent:

#!/bin/bash

SSH_ENV=$HOME/.ssh/environment

#echo "starting"

function start_agent {
    #echo "reaping agents"
    killall ssh-agent
    #echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    #echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV}
    /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
    . ${SSH_ENV}
    #echo "sourced ssh env"
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || { start_agent; }
else
    start_agent;
fi

ตอนนี้ในการเข้าสู่ระบบครั้งแรกที่คุณตั้งค่าคีย์ของคุณ ออกจากระบบและเข้าสู่ระบบและทำให้ชีวิตง่ายขึ้น

ใส่สคริปต์ทั้งหมดของคุณใน RCS สิ่งนี้ทำให้การพัฒนาเครื่องซิงค์ง่ายขึ้น ฉันใช้คอมไพล์ การรับรองความถูกต้องกับ git นั้นผ่าน ssh ดังนั้นคีย์ ssh ก็ช่วยได้เช่นกัน หมายเหตุ ณ จุดนี้คุณสามารถใช้บางอย่างเช่น nfs ฉันยังคงเป็นแฟนของ RCS ด้วยเหตุผลที่ฉันพูดถึงด้านล่าง

กรณีการใช้งานคือ

  1. เข้าสู่ระบบครั้งแรกคีย์ต่างๆได้รับการตั้งค่า
  2. หาก RCS ไม่ได้ตั้งค่าให้ตรวจสอบสคริปต์ส่วนตัวของคุณ (และอัปเดต / รวมเมื่อจำเป็นนี่อาจเป็นส่วนหนึ่งของ. bash_profile ของคุณหากคุณต้องการ)
  3. แก้ไข vimrc สคริปต์พิเศษ ฯลฯ และคอมมิท
  4. เมื่อล็อกอินเข้าสู่เครื่องอื่นแล้วทำการอัพเดต / ผสาน / ชำระเงิน สิ่งนี้ทำให้ทุกอย่างซิงค์กัน คือไม่มีการคัดลอกไฟล์ซึ่งบางครั้งคุณก็เหยียบย่ำและคุณไม่ต้องการ
  5. ในฐานะที่เป็นประโยชน์ด้านข้างคุณจะได้รับพลังของ RCS บางครั้งฉันทำการเปลี่ยนแปลงสคริปต์หรือกำหนดค่าที่ไม่น่าพอใจและจำเป็นต้องย้อนกลับและสิ่งที่คล้ายกัน

สิ่งที่ฉันต้องการลองต่อไปคือห่อการล็อกอิน / การตั้งค่าเริ่มต้นใน makefile ที่ฉันคัดลอกไปยังเครื่องใหม่ makefile สามารถทำงานในการตั้งค่าคีย์ RCS และอื่น ๆ ได้ชัดเจนมีค่าใช้จ่ายอยู่ที่นี่ แต่ถ้าคุณตั้งค่าเครื่องจำนวนมากนี่คือ:

  1. ประหยัดเวลา
  2. ง่ายต่อการกำหนดค่าและสคริปต์ส่วนบุคคลของเครื่องพัฒนาให้ตรงกัน
  3. การจัดการการเปลี่ยนแปลงสคริปต์และการกำหนดค่า

1

ฉันใช้ makefile ที่มีรายการเซิร์ฟเวอร์ทั้งหมดที่ฉันเข้าสู่ระบบและเมื่อฉันทำการเปลี่ยนแปลงในเครื่องท้องถิ่นของฉัน 'make' จะถูกเรียกใช้โดยใช้ makefile โดยอัตโนมัติซึ่งอัปเดตเซิร์ฟเวอร์ทั้งหมดเมื่อมีการเปลี่ยนแปลงหรือปลั๊กอินใด ๆ


ดูเหมือนว่าเป็นวิธีแฟนซีของการทำสคริปต์ ทำให้ดีมากเมื่อสร้างไฟล์หนึ่งจากอีกไฟล์หนึ่ง แต่ฉันไม่ต้องการใช้มันในสถานการณ์ที่กฎทุกข้อเป็น " .PHONY."
anthony

1

sshrcแก้ปัญหานี้ คุณใส่. vimrc ของคุณใน ~ / .sshrc.d / แล้วเพิ่มลงexport VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"ใน `/.sshrc


1

ฉันเขียนเครื่องมืออย่างง่ายสำหรับสิ่งนี้ที่จะช่วยให้คุณสามารถโอนไฟล์. vimrc ของคุณได้ทุกครั้งที่คุณใช้ sshโดยใช้ SSHd built-in config ในวิธีที่ไม่ได้มาตรฐาน

ไม่มีเพิ่มเติมsvn, scp, copy/pasteฯลฯ ที่จำเป็น

มันง่ายน้ำหนักเบาและใช้งานได้ตามค่าเริ่มต้นในการกำหนดค่าเซิร์ฟเวอร์ทั้งหมดที่ฉันได้ทดสอบแล้ว

https://github.com/gWOLF3/viSSHous


0

ใช้ตัวแปร VIMINIT:

export VIMINIT='set number'

และส่งต่อไปยังเซิร์ฟเวอร์ระยะไกล:

ssh remoteuser@remoteserver -o SendEnv=LC_VIMINIT -t 'export VIMINIT=$LC_VIMINIT && bash'

ใช้งานง่าย. bash_profiles หรือ. bashrc

export VIMINIT='
set number
'

export LC_VIMINIT=$VIMINIT

sshh (){
ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash'

ตอนนี้ลองเรียกใช้ vim บนรีโมตเซิร์ฟเวอร์โดยใช้ sshh สำหรับการเชื่อมต่อ:

sshh remoteuser@remoteserver

หากคุณต้องการคุณสามารถนำปลั๊กอินของคุณไปยังเซิร์ฟเวอร์ระยะไกลได้เช่นกัน:

export LC_VIMINIT="
set number
set nocompatible
filetype off
set rtp+=~/.[USER]_vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'


set shell=/bin/bash
call vundle#end()
filetype plugin indent on
"

export VIMINIT=$LC_VIMINIT

sshh (){
        if [[ $1 ]]; then
                ssh-copy-id $1 &>/dev/null &&
                rsync -lzr --partial --del ~/.[USER]_vim ${1}: &&
                ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash';
        else
                echo "Provide remote user@host";
        fi
}

0

ฉันมีสถานการณ์เดียวกัน แต่มันไม่ใช่แค่ " .vimrc" ฉันยังมีสิ่งที่ชอบ

  • การกำหนดค่า bash การกระตุ้นเตือนและฟังก์ชั่น
  • ssh การกำหนดค่าและไฟล์การอนุญาต,
  • เชลล์สคริปต์ฉันชอบที่จะมีประโยชน์
  • แน่นอน vimrc ของฉัน แต่ยังมีฟังก์ชั่น vim และไวยากรณ์ที่เน้นไฟล์

โซลูชันของฉัน (เริ่มต้นเมื่อ 30 ปีที่แล้วด้วย "dist" แต่เดิม!) คือการตั้งค่า cron ทุกคืนเพื่อซิงค์การกำหนดค่าบ้านขั้นต่ำสำหรับเครื่องทั้งหมดที่ฉันทำงานเพื่ออัปเดตทุกคืน

ด้วยวิธีนี้เครื่องอื่น ๆ ที่ฉันทำงานด้วยจะได้รับการปรับปรุงให้ทันสมัย ฉันสามารถเพิ่มเครื่องใหม่ไปยังรายการ 'บัญชี' และทำการกระจายเครื่องเดียวเพื่อเริ่มต้น

ไม่จำเป็นต้องมีมากและคุณสามารถเริ่มต้นเล็ก ๆ และทำให้มันซับซ้อนมากขึ้นในขณะที่คุณไป อย่างที่คุณสามารถจินตนาการได้หลังจาก 30 ปีที่การกระจายของฉันตอนนี้ค่อนข้างซับซ้อนดังนั้นฉันจะไม่ใส่ที่นี่ ไม่จำเป็นต้องบอกว่ามันยังทำสิ่งต่าง ๆ เช่นสลับการกำหนดค่าบางอย่างสำหรับคนอื่น ๆ สำหรับเครือข่ายบางอย่างการล้างข้อมูลภายในบ้าน (EG: ถังขยะไฟล์แคช) ตรวจสอบให้แน่ใจว่าการอนุญาตในบ้านนั้นถูกต้องทั้งหมดและอื่น ๆ

หมายเหตุฉันอนุญาตให้ล็อกอินโดยไม่ใช้รหัสผ่าน ssh จากเครื่อง 'บ้าน' หนึ่งเครื่องไปยังที่เหลือทั้งหมดอย่ากลับมาอีก! cross ssh ได้รับการป้องกันด้วยรหัสผ่าน


-1

คุณอาจพิจารณาสคริปต์ EXPECT ที่ให้คุณตั้งค่าพา ธ และสภาพแวดล้อม (เช่นตัวแปร EXRC) เมื่อกดแป้นบางครั้ง ไม่ควรยาวเกินไปก่อนที่ใครบางคนโพสต์สคริปต์ที่คล้ายกัน

เมื่อเซิร์ฟเวอร์ฟาร์มของคุณมีจำนวนมากกว่าสองสามโหล (คิดเป็นพัน) การมีบางสิ่งที่ง่ายต่อการตั้งค่าสภาพแวดล้อมของคุณในกล่อง 'บริสุทธิ์' เป็นผู้ช่วยชีวิตที่แท้จริง

บ่อยครั้งเมื่อฉันเข้าสู่กล่องมันสร้าง homedir ของฉันเป็นครั้งแรก!


คาดหวังเป็นวิธีที่บอบบางมากในการทำอะไร ระบบปฏิบัติการสถาปัตยกรรมหรือแม้กระทั่งการอัพเกรดที่แตกต่างกัน โอเคสำหรับสิ่งเล็ก ๆ แต่ไม่สามารถขยายได้เมื่อเวลาผ่านไป
anthony

-1

มันรับรู้ได้ด้วย bash oneliner ต่อไปนี้ เนื่องจากทำด้วยการทดแทนกระบวนการไฟล์ชั่วคราวจะไม่ถูกสร้างขึ้น

ssh -t user@host '
bash --rcfile <(
    echo -e ' $(cat <(echo "function lvim() { vim -u <(echo "$(cat ~/.vimrc|base64)"|base64 -d) \$@ ; }") \
                    ~/dotfiles/{.bashrc,sh_function,sh_alias,bash_prompt} \
                    <(echo -e alias vim=lvim) | \
                    base64 
               ) ' \
    |base64 -d)'

https://gist.github.com/blacknon/a47083f3bbbd0374998bdf7e3b3396cc

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