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


135

พวกเราบางคนใน บริษัท ของฉันมีสิทธิ์เข้าถึงรูทบนเซิร์ฟเวอร์ที่ใช้งานจริง เรากำลังมองหาวิธีที่ดีที่จะทำให้มันยิ่งชัดเจนเมื่อเราได้ ssh'd ใน

ความคิดบางอย่างที่เรามีคือ:

  • พรอมต์สีแดงสด
  • ตอบปริศนาก่อนรับเปลือก
  • พิมพ์คำแบบสุ่มก่อนรับเชลล์

พวกคุณใช้เทคนิคอะไรในการสร้างความแตกต่างให้กับระบบการผลิต


11
มีวิธีใดที่จะสอนคนให้หลีกเลี่ยงการใช้ระบบการผลิตหรือไม่? หากคุณมีทุกอย่างที่ตรวจสอบลงใน Puppet คุณจะต้องลงชื่อเข้าใช้ระบบการผลิตเพื่อแก้ไขปัญหาเท่านั้น
Alex Holst

37
คุณอนุญาตให้รูท ssh เข้าถึงระบบการผลิตของคุณ ???? !!!!!
symcbean

7
@symcbean: นั่นไม่ใช่สิ่งที่ Sionide พูด เขาอาจมีความหมายหลังจากที่คุณ SSH ลงในบัญชีผู้ใช้ของคุณ
Zan Lynx

3
คำถามนี้กลายเป็นตัวเลือกสำหรับชุมชน wiki หรือไม่?
MadHatter

15
คุณสามารถทำให้ชัดเจนว่าเป็นระบบการผลิตโดยการปิดการใช้งาน SSH มันไม่สามารถชัดเจนกว่านั้นอีกแล้ว
Franci Penov

คำตอบ:


137

พรอมต์สีแดงเป็นความคิดที่ดีซึ่งฉันก็ใช้เช่นกัน

เคล็ดลับอีกอย่างคือการใส่คำเตือน ASCII ขนาดใหญ่ลงใน/etc/motdไฟล์
การมีบางสิ่งเช่นนี้ทักทายคุณเมื่อคุณเข้าสู่ระบบควรได้รับความสนใจจากคุณ:

 _______ _ _ _____ _____ _____ _____            
| __ __ | | | | _ _ | / ____ | | _ _ | / ____ | / \    
   | | | | __ | | | | | (___ | | | (___ / \   
   | | | __ | | | \ ___ \ | | \ ___ \ / / \ \  
   | | | | | | _ | | _ ____) | _ | | _ ____) | / ____ \
   | _ | | _ | | _ | _____ | _____ / | _____ | _____ / / _ / \ _ \


 _____ _____ ____ _____ _ _ _____ _______ _____ ____ _ _ 
| __ \ | __ \ / __ \ | __ \ | | | | / ____ | __ __ | _ _ / __ \ | \ | |
| | __) | | __) | | | | | | | | | | | | | | || | | | \ | |
| ___ / | _ / | | | | | | | | | | | | | | || | | | . `|
| | | | \ \ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | | \ |
| _ | | _ | \ _ \\ ____ / | _____ / \ ____ / \ _____ | | _ | | _____ \ ____ / | _ | \ _ |


 __ __ _____ _ _ _____ _ _ ______ 
| \ / | / \ / ____ | | | | _ _ | \ | | ____ |
| \ / | / \ | | | | __ | | | | | \ | | | __   
| | \ / | | / / \ \ | | | __ | | | | . `| __ |  
| | | | / ____ \ | ____ | | | | _ | | _ | | \ | | ____
| _ | | _ / _ / \ _ \ _____ | _ | | _ | _____ | _ | \ _ | ______ |

คุณสามารถสร้างคำเตือนบนเว็บไซต์นี้หรือคุณอาจใช้figlet คำสั่ง

figlet

เช่นเดียวกับที่ Nicholas Smith แนะนำในการแสดงความคิดเห็นคุณสามารถปรุงรสด้วยมังกรหรือสัตว์อื่น ๆ โดยใช้cowsayคำสั่ง

dragon cowsay

แทนที่จะใช้ไฟล์ / etc / motd คุณสามารถโทรcowsayหรือfigletใน.profileไฟล์


3
ฉันชอบสิ่งนี้!
Sionide21

13
หากคุณพิมพ์คำสั่งบางอย่างคุณจะไม่เห็นอีกต่อไป
นิลส์

3
จริงอยู่ที่พรอมต์สีแดงมีประโยชน์
Kenny Rasschaert

41
บนเซิร์ฟเวอร์ Windows ฉันใช้เดสก์ท็อปสีชมพูสดใสและแถบหัวเรื่อง / โทนสีเหลืองสดใสเพื่อให้เห็นได้ชัดจริงๆ นี่คือพรอมต์คำสั่งแบบมีสีของเรา
Mark Henderson

8
ฉันต้องการเพิ่มมังกร ASCIIลงในส่วนผสม
Nicholas Smith

80

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

ผู้พัฒนาสวมหมวกปีกกว้างสีชมพู


1
ฮ่าฮ่า! +1 เพราะฉัน LOL แต่อย่างจริงจังผู้คนสามารถมองหาแว่นตาที่หายไปขณะสวมใส่ฉันสงสัยว่าหมวกจะทำหน้าที่เป็น "การเตือนความจำคงที่" นอกจากนี้มันไม่ทำอะไรเลยที่จะช่วยให้คุณจำได้ว่าหน้าต่างไหนอยู่
Felix Dombek

7
ใช่คุณต้องเปลี่ยนกระบวนการของคุณเป็น: 1) ประกาศความต้องการที่จะแก้ไขการผลิต 2) ออกหมวกปีกกว้างและปิดหน้าต่างอื่น ๆ ทั้งหมด 3) ทำสิ่งที่ผลิตในขณะที่ทุกคนดู 4) ออกจากระบบของเซสชันและลบหมวกปีกกว้าง
Aric TenEyck

1
"2) ออกจากหมวกปีกกว้างและปิดหน้าต่างอื่น ๆ ทั้งหมด" นั่นจะไม่ทำงานใน บริษัท ของฉันเพราะนั่นเป็นขั้นตอนที่ 2 ของระเบียบปฏิบัติงานทั้งหมดของเรา ขั้นตอนที่ 1 แน่นอนว่า "เปิดไฟ" เพราะเมื่อปิดหน้าต่างแล้วมันจะมืดไปในที่ทำงานนี้
คู่ปรับ Shot

50

ที่ใหญ่ที่สุดที่ฉันเคยใช้คือรูปแบบการตั้งชื่อแบบไม่ต่อเนื่องโดยที่ระบบ prod นั้นมีชื่อแตกต่างจากอินสแตนซ์ทดสอบ / dev สิ่งนี้ทำให้สไตล์ "Username @ Hostname:" พรอมต์แตกต่างกันอย่างเห็นได้ชัด และโดยชัดเจนฉันหมายถึงมากกว่าคำที่แตกต่างรูปแบบที่แตกต่างกันเกินไป:

ตัวอย่าง: PRD-WEB001 เทียบกับ DEVEL-BOB-WEB001

นี่มีหลายสิ่งที่เกิดขึ้น:

  • บล็อก hypenated พิเศษทำให้เป็นชุดของสามแทนที่จะเป็นชุดของสอง
  • ชุดแรกมีความยาวต่างกัน
  • ความยาวโดยรวมของชื่อแตกต่างกันอย่างชัดเจนซึ่งทำให้ระยะห่างบรรทัดคำสั่งแตกต่างกันเมื่อเทียบกับแต่ละอื่น ๆ และข้อความอื่น ๆ ในหน้าต่าง

และที่สำคัญที่สุดมันไม่จำเป็นต้องมีการตั้งค่าพิเศษสำหรับการผลิตเพื่อหลีกเลี่ยงข้อผิดพลาดในการซื้อ

จากประสบการณ์ของฉันคุณต้องการบางสิ่งที่เป็นเครื่องเตือนใจว่าคุณอยู่ที่ไหน วิธีการเข้าสู่ระบบเช่นปริศนาเป็นสิ่งที่ดีประมาณ 10 วินาทีจนกว่าคุณจะลืมหน้าต่างที่เป็น สิ่งที่ต้องทำก็คือทำlsในไดเรกทอรีที่ไม่ถูกต้องเพื่อเลื่อนลอจิสติกส์แบนเนอร์ลวงตาออกจากมุมมองฝังหน้าต่างเทอร์มินัลใต้หน้าต่างเบราว์เซอร์ขณะที่ทำบางสิ่งบางอย่างแท็บ alt กลับไปที่หน้าต่างผิด ดีที่สุดที่จะมีคิวภาพที่คงที่เช่นพร้อมรับคำสั่งที่แตกต่างกันอย่างมีนัยสำคัญ


ใช้งานได้ดีกับระบบพื้นฐาน แต่ทันทีที่คุณเปลี่ยน dev- * เป็น prod- * the devs moan และ groan เมื่อลิงก์ครึ่งหนึ่งหยุดทำงาน (ไม่ว่าคุณจะทำมาก่อนกี่ครั้ง) และบางครั้ง ระบบจะทำการ จำกัด การทำงานครึ่งหนึ่งจนกว่าคุณจะแก้ไขการอ้างอิงทั้งหมดไปยังชื่อเก่าในไฟล์ปรับแต่ง โดยเฉพาะอย่างยิ่งเมื่อติดตั้งซอฟต์แวร์ที่เป็นกรรมสิทธิ์และชื่อแทน DNS ช่วยได้มาก ยิ่งกว่านั้นมันง่ายที่จะลืมพรอมต์อย่างสมบูรณ์ในขณะที่สลับหน้าต่าง
SilverbackNet

ผู้พัฒนาจำเป็นต้องสร้างการตั้งค่าที่ใช้งานได้กับ dev / ทดสอบ / การจัดเตรียม / การผลิต (นั่นคือสิ่งที่ฉันทำ แต่เป็นอีกเรื่องหนึ่ง) สำหรับการทำงาน 'พรอมต์สีแดง' สำหรับ bash (ยากกว่าที่คิด) ดูคำตอบของฉันที่serverfault.com/a/479718/79266
RichVel

39

สิ่งหนึ่งที่คุณต้องจำไว้คือสิ่งนี้จะต้องมีการเตือนความจำอย่างต่อเนื่องไม่ใช่เพียงตัวบ่งชี้ในเวลาเข้าสู่ระบบ บ่อยครั้งที่บางคนจะมีเชลล์หลายตัวที่ทำงานพร้อมกันในแท็บที่แตกต่างกันและย้ายไปมาระหว่างพวกเขา บางคนจะเป็นนักพัฒนา ดังนั้นเมื่อคุณใช้คำสั่งคุณจะต้องมีตัวบ่งชี้ ณ จุดนั้น ดังนั้นการมีพรอมต์พิเศษเป็นวิธีที่ดีที่สุดในประสบการณ์ของฉันด้วยแถบชื่อเรื่อง / แท็บที่มีการปรับเปลี่ยนเป็นส่วนเสริมที่ดีสำหรับการค้นหาหน้าต่าง / แท็บที่ถูกต้องได้อย่างง่ายดาย

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

ตัวอย่างสีแจ้ง

มักจะชอบ

set prompt =  "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "` 

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


สำหรับการทำงาน 'พรอมต์สีแดง' สำหรับ bash (ยากกว่าที่คิด) ดูคำตอบของฉันที่serverfault.com/a/479718/79266 - ยังแสดงสาขา git ไดเรกทอรีปัจจุบันที่ถูกตัดทอน ฯลฯ
RichVel

14

นี่คือคำแนะนำของฉัน:

1) ตรวจสอบให้แน่ใจว่าคำสั่งส่วนใหญ่ (rm, chown, chmod, /etc/init.d/*) ในสภาพแวดล้อมการผลิตจำเป็นต้องเข้าถึง sudo

2) ใช้ PS1 / PS2 เพื่อระบุว่าผู้ใช้อยู่ในเซิร์ฟเวอร์ Prod

bash-3.2$  export PS1="[\u@\h \W]\$ "

นี่จะแสดงพรอมต์คำสั่งเป็น

[sridhar@prodappserver901 conf]$

3) หากใช้ลูกค้า Putty / SSH คุณสามารถตั้งค่าสี / โปรไฟล์พื้นหลังที่ไม่ซ้ำกันเพื่อให้เซิร์ฟเวอร์การผลิตโดดเด่นได้ตลอดเวลา


# 1 เป็นแนวคิดที่น่าสนใจ แต่ใช้ไม่ได้เนื่องจากสคริปต์ทำงานในฐานะผู้ใช้ daemon อาจต้องใช้ rm, chmod เป็นต้น
Zan Lynx

13

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

สิ่งเดียวที่ฉันเห็นว่าคุ้มค่าจริงๆคือพรอมต์สี ฉันชอบสีเขียวสำหรับการพัฒนา / ทดสอบสีแดงสำหรับการผลิตและสีน้ำเงินสำหรับเครื่องใน DMZ ด้วยวิธีนี้แม้ว่าฉันจะมีสองเครื่องที่มีชื่อเดียวกัน (ในเครือข่ายที่แตกต่างกัน) เช่นเมื่อเตรียมเครื่องทดแทนฉันยังสามารถบอกได้อย่างง่ายดายว่าฉันกำลังใช้เครื่องใด


11

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

สิ่งนี้ควรนำไปสู่พฤติกรรมที่แตกต่าง:

  1. พัฒนา
  2. ทดสอบ
  3. ทำการเปลี่ยนแปลงของคุณไปยังเซิร์ฟเวอร์ staging
  4. จากนั้นให้ทำการผลิตและนำไปใช้อย่างรวดเร็ว (เช่นเดียวกับที่คุณทำบนเซิร์ฟเวอร์จัดเตรียม)

9

การทำงานกับเครื่องผลิตด้วยบัญชีรูทธรรมดาไม่เคยเป็นความคิดที่ดีเลย

มีบัญชีที่มีสิทธิ์แบบเต็มของ sudo ไม่อนุญาตให้บันทึกเซสชัน sudo ห้าม sudo su ใช้รหัสผ่านแยกต่างหากสำหรับรหัสผ่าน (ไม่ใช่รหัสที่คุณมีสำหรับอุปกรณ์ dev) อาจปรับ sudo เพื่อแจ้งให้ทราบเกี่ยวกับข้อมูลประจำตัวของการผลิตของเชลล์ก่อนดำเนินการคำสั่ง (ผ่านนามแฝง)

มันจะทำให้เกิดข้อผิดพลาดโดยอุบัติเหตุได้ค่อนข้างยาก และพรอมต์สีแดงไม่เคยทำร้าย


และโดย "sudo su" คุณหมายถึง "sudo -i" หรืออย่างน้อยที่สุด "sudo su -" ใช่ไหม?
Sparr

โว้ว! มัน Sparr! โลกใบเล็ก :)
Sionide21

1
เป็นไปไม่ได้ที่จะหยุดคนไม่ให้มีเปลือกหอย ( sudo bash) คุณสามารถรับรูทเชลล์ได้จากการตั้งค่า 'บัญชีดำ' (หากคุณระมัดระวังคุณสามารถหยุดได้ด้วยการตั้งค่ารายการที่อนุญาต แต่โดยทั่วไปจะไม่รับประกัน)
606723

1
ไม่ควรป้องกันการเข้าถึงรูทเชลล์โดยเจตนา - มีเพียงบางวิธีที่ผู้คนคุ้นเคยเพื่อให้สามารถใช้งานได้โดยไม่รู้ตัว
Mihails Strasuns

8

ฉันไปกับแนวคิดแจ้งสีแดงและพบว่ามันน่าเบื่อพอสมควรที่จะหารหัสที่ใช้งาน.bashrcได้

ดังนั้นนี่คือรุ่นของฉันพร้อมที่จะถูกรวมอยู่ใน.bashrc- https://github.com/RichVel/nicer-bash-prompt มันขับเคลื่อนด้วยชื่อโฮสต์อย่างสมบูรณ์ตราบใดที่คุณมีรูปแบบที่เหมาะสมกับชื่อโฮสต์ที่ใช้งานจริง ( xyprod01เช่นxyprod02, ฯลฯ ) มันจะทำงานได้ดีและคุณสามารถใช้ชื่อเดียวกัน.bashrcในทุกสภาพแวดล้อม

ดูเหมือนว่านี้:

สกรีนช็อตของพรอมต์สีแดง

สิ่งนี้จะสร้างพรอมต์การทุบตีที่ดีกว่ารวมถึงพรอมต์สีแดงบนโฮสต์การผลิต - ยังแสดงให้คุณเห็นสาขา git ปัจจุบันและ 2 ไดเรกทอรีสุดท้ายใน $ PWD ใช้ความระมัดระวังเพื่อหลีกเลี่ยงการทำให้จอแสดงผลพรอมต์เกิดขึ้นเมื่อใช้ Ctrl / R (การค้นหาแบบย้อนกลับ) ใน bash

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


5

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


2
ในขณะที่มันจะมีประสิทธิภาพอย่างแน่นอนสำหรับสถานการณ์ส่วนใหญ่ก็จะมีผลตอบโต้อย่างมาก
John Gardeniers

ฉันเห็นด้วยกับจอห์น แต่นี่เป็นสิ่งที่คิดอย่างแน่นอน
user606723

@ JohnGardeniers: ต่อต้านหรือไม่ คุณหมายความว่ามันจะส่งผลกระทบต่อประสิทธิภาพการผลิตหรือไม่
LarsH

@ LarsH ต้องเข้าไปในห้องต่าง ๆ โดยไม่จำเป็นเพื่อทำงานส่วนต่าง ๆ ของคุณโดยเฉพาะอย่างยิ่งจะกระทบกับการทำงาน เครือข่ายทั้งหมดของคุณควรจัดการได้จากที่เดียว
John Gardeniers

@JohnGardeniers: เข้าใจ เมื่อแรกที่คุณพูดว่า "ต่อต้าน" ฉันคิดว่าคุณหมายถึงผลของมันเป็นสิ่งที่ตรงกันข้ามกับวัตถุประสงค์ที่ระบุไว้คือเพื่อเตือนความจำอย่างต่อเนื่องว่าคุณกำลังเข้าถึงเครื่องจักรที่ใช้งานจริง
LarsH

4

เพียงปรับแต่งข้อเสนอแนะด้านบน ฉันใช้ CDE เป็นเดสก์ท็อปยูนิกซ์และระบบการผลิตทั้งหมดที่ฉันเข้าถึงผ่านเมนูใน. dt / dtwmrc ในทุกระบบ dev และ UAT ฉันเก็บโทนสีปกติของฉัน แต่ในระบบ prod ฉันตั้งเทอร์มินัลให้มีพื้นหลังสีแดง ฉันไม่ชอบรูปลักษณ์ แต่เป็นประเด็น

กทพ. - พลาดการแนะนำของ Karol ในสิ่งเดียวกัน


4

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

แก้ไข: ฉันทำงานในอุตสาหกรรมการขนส่ง


อุ๊ยตาย ในขณะที่ฉันสามารถเข้าใจความต้องการนี้ฉันดีใจที่ฉันไม่ทำงานในสภาพแวดล้อมแบบนั้น
LarsH

1
ฉันดีใจที่ฉันทำงาน - ฉันกำลังทำงานในการขนส่งและระบบเหล่านี้ไม่เพียงแค่จ่ายเงินเมื่อพวกเขาลงไปพวกเขาเสียชีวิต
Basil

ฉันดีใจที่คุณระวังเช่นกัน!
LarsH

3

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

ขยายหน้าต่างคลิกลักษณะการทำงาน ป้อนบางสิ่งใน Window Title เช่น:

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *

3

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


3

นี่คือสิ่งที่ฉันทำบน Mac ของฉัน สำหรับเซิร์ฟเวอร์ทุกเครื่องฉันเพิ่มรายการไว้ในไฟล์ ~ / .ssh / config เช่น

Host app13
    HostName server.example.com
    User tom
    PermitLocalCommand yes
    LocalCommand osascript %d/bin/change_terminal_colours.scpt 12 35 35

Applescript นี้จะถูกเรียกใช้เมื่อมีการสร้างเซสชัน SSH มันตั้งค่าสีพื้นหลังของเทอร์มินัลเป็นค่า RGB ที่ให้ไว้ (หรือกลับไปเป็นค่าเริ่มต้นหากไม่มีการระบุค่าสี) ส่วนที่อาจยุ่งยากคือการสกัดกั้นจุดสิ้นสุดของเซสชัน SSH เพื่อตั้งค่าสีกลับไปเป็นค่าเริ่มต้น สำหรับสิ่งนั้นฉันสร้างเชลล์สคริปต์ต่อไปนี้เป็น ~ / bin / ssh เพื่อลบล้างคำสั่ง ssh เริ่มต้น สิ่งนี้จะดักจับและตัดการเรียกไปยังคำสั่ง SSH ฉันพยายามใช้ aliasing และฟังก์ชั่น แต่วิธีนี้ทำงานได้ดีที่สุด:

#!/bin/bash
/usr/bin/ssh $@
osascript ~/bin/change_terminal_colours.scpt

นี่คือแหล่งที่มาสำหรับสคริปต์change_terminal_colours.scpt วางสิ่งนี้ในไดเรกทอรี ~ / bin ของคุณด้วย:

on run argv
    tell application "Terminal"
        # NOTE: Color values range from 0 to 65535.
        if (count of argv) > 0 then
            set backgroundColor to {(item 1 of argv) * 256, (item 2 of argv) * 256, (item 3 of argv) * 256}
        else
            set backgroundColor to background color of default settings
        end if

        try
            set background color of (selected tab of front window) to backgroundColor
        end try
    end tell
end run

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


3

กลุ่มของฉันใช้visionapp Remote Desktop (แก้ไข 2017: ดูเหมือนว่าผลิตภัณฑ์จะถูกเปลี่ยนชื่อ แต่ฉันคิดว่ามันเหมือนกัน) สำหรับทั้ง RDP ในเครื่อง Windows และ SSH ไปเป็น Linux การเชื่อมต่อของเราถูกจัดกลุ่มเป็นโฟลเดอร์ตามระดับและกำหนดสีแท็บ

ดังนั้นเมื่อใดก็ตามที่เราเปิดการเชื่อมต่อการผลิต - แบม! - เราได้รับสีแดงสดบนใบหน้าของเรา:

ป้อนคำอธิบายรูปภาพที่นี่

เป็นการลงทุนที่คุ้มค่าหากคุณเป็นร้าน Windows ขนาดใหญ่และพึ่งพา RDP เป็นจำนวนมาก ฉันเดิมพันว่ามีเครื่องมือที่ยอดเยี่ยมอื่น ๆ หากคุณต้องการเพียงแค่ SSH


2

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

ตัวอย่างเช่นฉันมีพื้นหลังสีแดงสำหรับระบบการผลิตสีเขียวเพื่อการพัฒนาสีน้ำเงินสำหรับโครงสร้างพื้นฐาน (เราเตอร์ ฯลฯ ) และสีขาวสำหรับเวิร์กสเตชันท้องถิ่น

หากคุณใช้ GNOME จะมีวิธีง่าย ๆ ในการเพิ่มการเชื่อมต่อ SSH กับโปรไฟล์ที่คุณต้องการ:

gnome-terminal --window-with-profile=production -e 'ssh root@production.example.com'

ข้อเสียเปรียบหลัก - เป็นฝั่งไคลเอ็นต์ดังนั้นพรอมต์พิเศษยังคงเป็นทางออกที่ดีที่สุดของคุณหากคุณเข้าถึงเซิร์ฟเวอร์จากสถานที่ต่าง ๆ


2

อีกวิธีในการทำให้ชัดเจนว่าคุณอยู่ในระบบที่ใช้งานจริงคือการตั้งค่าคุณสมบัติ TMOUT (autologout) ในระบบการผลิต


1
มันจะทำให้ชัดเจนได้อย่างไร อาจเป็นอันตรายอย่างยิ่งเนื่องจากคำสั่งหรือกระบวนการอาจทำงานอยู่และจะถูกยกเลิกโดยทันทีเมื่อเซสชันถูกล็อกออฟ
John Gardeniers

3
ฉันเพิ่งทดสอบ TMOUT และดูเหมือนว่าคำสั่งที่รันนานกำลังรันอยู่จะไม่ยุติเซสชัน มันจะสิ้นสุดเมื่อคุณนั่งที่พรอมต์คำสั่ง นิลส์ยังแนะนำสิ่งนี้และมันก็สมเหตุสมผลสำหรับฉัน
sjbotha

1
นั่นเป็นสิ่งที่ดีมากเกี่ยวกับ TMOUT เราใช้ autolog หรือ killerd ก่อนที่เราจะค้นพบ TMOUT autolog และ killerd นั้นไม่ค่อยดี killerd ยังเป็นรถและมีแนวโน้มที่จะป้องกัน CPU หนึ่งเสร็จสมบูรณ์ ...
นิลส์

2

เนื่องจากข้อกำหนดทางกฎหมายที่กว้างใหญ่ในขณะที่ทำงานในอุตสาหกรรมเฉพาะกิจกรรมของทุกคนจึงเป็นกุญแจสำคัญสำหรับข้อพิพาทในอนาคต ด้วยเหตุนี้การเข้าถึงจึงถูก จำกัด และคุณต้องข้าม "เมนู" สองสามอย่างที่อนุญาตให้คุณเข้าถึงเครื่องในฐานะผู้ใช้ที่เชื่อถือได้จำนวนหนึ่ง โดยการตั้งค่าระบบนี้ผู้ใช้จะต้องเลือกสภาพแวดล้อมการผลิตหรือ QA อย่างรอบคอบแล้วเลือกโฮสต์ที่พวกเขาต้องการเข้าถึงจากรายการ นี่เป็นช่วงเวลาหมดเวลาดังนั้นคุณจึงไม่ต้องเจอกับสถานการณ์ในการเข้าสู่โฮสต์ที่ผลิตและลืมสภาพแวดล้อมที่คุณอยู่ในวันถัดไป


2

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

มันสามารถเขียนในบรรทัดน้อยลง แต่ฉันทำเช่นนี้ดังนั้นฉันสามารถปรับแต่งอีก 2 กรณี (ไม่ใช่รูตที่ไม่ใช่ผลิตภัณฑ์แยง) ถ้าฉันต้องการ

เราทำงานโดยมีข้อสันนิษฐานว่าเซิร์ฟเวอร์ที่ใช้งานจริงไม่ได้ใช้ DHCP แต่คุณสามารถใช้วิธีอื่นใดก็ได้ในการหาว่าระบบของมันนั้นเป็นระบบใด อะไรก็ได้ที่เหมาะกับคุณ

productionSrv=1
grep -qi bootproto=dhcp /etc/sysconfig/network-scripts/ifcfg-*
if [ "$?" -eq 0 ]; then
    productionSrv=0
fi
hostName=`hostname`
userName=`whoami`
if [ $userName == "root" ]
then
    if [ "$productionSrv" == 1 ]
    then
        hostName=`echo $hostName | tr [:lower:] [:upper:]`
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    else
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    fi
    PATH=$PATH:/sbin/
else
    if [ "$productionSrv" == 1 ]
    then
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    else
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    fi
fi


ในขณะที่สคริปต์นั้นน่าสนใจข้อสันนิษฐานของ IP แบบคงที่เท่านั้นในระบบการผลิตไม่ธรรมดา ในกรณีส่วนใหญ่เซิร์ฟเวอร์ทั้งหมดจะมี IP แบบคงที่ทั้งการพัฒนาและการผลิต
Martijn Heemels

1
ม้าสำหรับหลักสูตรจริงๆ ระบบ dev ของเราใช้การจอง DHCP คุณสามารถใช้ระบบใดก็ได้ที่เหมาะกับคุณเช่นเปรียบเทียบชื่อโฮสต์, subnet, vlan หรืออะไรก็ตาม
Sirex

@ Sirex ตรงกันข้ามก็เป็นไปได้เช่นกัน ตัวอย่างเช่น EC2 VPS ของ Amazon ใช้สัญญาเช่าแบบคงที่ DHCP บนเซิร์ฟเวอร์การผลิตและ IP สาธารณะจะถูกส่งต่อ อินสแตนซ์นั้นไม่รู้โดยตรงว่า IP สาธารณะใดที่กำลังทำงานอยู่อย่างน้อยก็ไม่ได้อยู่ในระดับส่วนต่อประสานเครือข่าย
Matthew Scharley

1
ได้. คุณสามารถมีแพ็คเกจ rpm สำหรับบทบาทที่สร้างไฟล์ / etc / PRODUCTION และทดสอบสิ่งนั้นเสมอ สิ่งที่ลอยเรือของคุณ
Sirex

1

มีรหัสผ่านรูทแตกต่างกัน (อาจนานกว่า) บนเครื่องที่ใช้งานจริง

คุณสามารถสร้าง sudo พิเศษ (หรือ sudo wrapper) เช่นข้อความพิเศษถูกส่งออกสำหรับเครื่องที่ใช้งานจริง


.. รหัสผ่านรูทที่แตกต่างกันในเครื่องแยง? ทำไมฉันไม่คิดอย่างนั้น!
user606723

นอกจากนี้ sudo ยังมีตัวเลือกการกำหนดค่ามากมาย ฉันจะแปลกใจถ้าคุณทำสิ่งนี้ไม่ได้ sudo ที่กำหนดเองเป็นความคิดที่แย่มากเพราะจะไม่ได้รับการทดสอบว่าเพียงพอที่จะได้รับ suid bit
user606723

1

ที่นี่เรามีการกำหนดค่าเริ่มต้นฉาบเพื่อทำให้สีพื้นหน้าของทั้งหน้าจอเป็นสีชมพูสดใส

  • Prod: สีชมพูสดใส
  • การถดถอย: สีเขียวอ่อน
  • รุ่น: ฟ้าจาง
  • Dev: ปกติ

มันใช้งานได้ดี แต่ฉันชอบแนวคิดอื่น ๆ ที่นี่

  • Pro: ยกเว้นบางสิ่งที่ไม่ได้ใช้สีพื้นหน้า .. ทุกหน้าจอ Prod เป็นสีชมพูสดใส
  • คอนดิชั่น: แน่นอนถ้าคุณ ssh ผ่านสิ่งอื่นนอกเหนือจากการกำหนดค่าเริ่มต้นโป๊วสิ่งนี้ไม่ทำอะไรเลย

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