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


9

ในแล็บวิทยาลัยของฉันคอมพิวเตอร์ทุกเครื่องเชื่อมต่อกับ LAN ดังนั้นฉันต้องการติดตั้งซอฟต์แวร์ 'spyder' จากคอมพิวเตอร์เครื่องหนึ่งไปยังคอมพิวเตอร์ทั้งหมด
เป็นไปได้ไหม ?


คุณเป็นผู้ดูแลระบบหรือไม่ ถ้าไม่ได้รับอนุญาตก่อน
Thorbjørn Ravn Andersen

ฉันติดตั้งUbuntuในคอมพิวเตอร์แต่ละเครื่องของห้องปฏิบัติการวิทยาลัยของฉันด้วยชื่อผู้ใช้ (CSLAB) และ passwrod เดียวกัน (E201) และคอมพิวเตอร์ทุกเครื่องเชื่อมต่อกับ LAN เดียวกัน ดังนั้นฉันจะกลายเป็นผู้ดูแลระบบสำหรับผู้ใช้คอมพิวเตอร์แต่ละคนได้อย่างไร
Abhishek Kamal

1
@AbhishekKamal คำแนะนำ .. อย่าโพสต์ชื่อผู้ใช้จริง (และรหัสผ่าน ??) บนเว็บไซต์สาธารณะ และถ้า "E201" เป็นรหัสผ่านผู้ดูแลระบบของคุณจริงๆให้ลองแทนที่ด้วยสิ่งที่ปลอดภัยมากขึ้น!
tplive

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

1
"ผู้ดูแลระบบ" บน Ubuntu ไม่มีอะไรมากไปกว่าคนที่สามารถรูทเช่นกับ "sudo -s" (และจากนั้นเรียกใช้ "apt" เพื่อติดตั้งซอฟต์แวร์) ทำไมคุณทำเช่นนี้ตั้งแต่แรก?
Thorbjørn Ravn Andersen

คำตอบ:


14

สำหรับวิธีนี้โซลูชันที่ฉันต้องการคือ Ansible ( https://www.ansible.com/ ) มันช่วยให้คุณทำการตั้งค่าหรือการติดตั้งบนคอมพิวเตอร์ได้มากเท่าที่คุณต้องการ ข้อดีอีกอย่างของ Ansible คือชุมชนที่มีสคริปต์ที่แข็งแกร่งจำนวนมากที่พร้อมใช้งานสำหรับการดำเนินงานการกำหนดค่าและการติดตั้ง

ดูเหมือนว่าบทช่วยสอนที่เข้าใจได้จะช่วยให้คุณพร้อมกับ Ansible

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


12

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

เปิดหน้าต่างบรรทัดคำสั่งเพื่อติดตั้ง

sudo apt-get install clusterssh

ตอนนี้คุณสามารถเปิดการเชื่อมต่อกับโฮสต์จำนวนหนึ่งเช่นนี้

clusterssh -l username labhost1 labhost2 labhost3

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

ตัวอย่าง ClusterSSH ในตัวอย่างนี้คุณสามารถเห็นหน้าต่างคำสั่งที่มี "apt-get update" ทางด้านขวาและเทอร์มินัลคลัสเตอร์ทั้งหมดทางด้านซ้าย

หากหนึ่งในโฮสต์มีปัญหาคุณสามารถดูข้อความแสดงข้อผิดพลาดได้ทันทีและคลิกที่เทอร์มินัลที่เกี่ยวข้องเพื่อแก้ไขสถานการณ์

นอกจากนี้คุณยังสามารถเขียนรายการclustersshเพื่อเชื่อมต่อกับ: เปิดโปรแกรมแก้ไขรายการโปรดและเขียน$HOME/.clusterssh/clusters

collegelab labhost1
collegelab labhost2
collegelab labhost3

จากนั้นเชื่อมต่อกับ

clusterssh -l username collegelab

อ่านเพิ่มเติม


ในความเป็นธรรมคุณอาจทำแบบเดียวกันกับ commandline Ansible ได้อย่างง่ายดายและง่ายดายตามที่คุณแนะนำสำหรับ clusterssh .. :) ใส่โฮสต์ของคุณในไฟล์สินค้าคงคลังแล้วเรียกใช้คำสั่งจากเทอร์มินัลเช่นansible inventory -a 'shell command goes here'
tplive

1
@tplive แน่นอนคุณสามารถทำได้ด้วยคำสั่ง ssh เพียงอย่างเดียวเช่นกันนอกจากนี้ยังมีpssh.... แต่ด้วย clusterssh คุณมีข้อเสนอแนะทันทีและวิธีที่จะหยุด / แก้ไขหากมีปัญหา นี่เป็นอีกทางเลือกหนึ่งในการทำสิ่งต่าง ๆ โดยส่วนตัวแล้วฉันต้องการซอฟต์แวร์อัตโนมัติ (เช่น ansible)
Robert Riedl

ในห้องปฏิบัติการที่วิทยาลัยของฉัน, คอมพิวเตอร์แต่ละเครื่องจะมี ชื่อผู้ใช้และรหัสผ่านเดียวกันเดียวกัน ดังนั้นฉันสามารถใช้clustersshหรือansibleเพื่อที่?
Abhishek Kamal

@RobertRiedl และนั่นเป็นเหตุผลที่ฉัน upvoted คำตอบของคุณ .. :)
23919

1
@AbhishekKamal อย่างแน่นอน! เพื่อประสบการณ์การใช้งานที่ราบรื่นที่สุดด้วยการเข้าสู่ระบบโดยไม่ใช้รหัสผ่านให้ใส่คีย์สาธารณะของคุณลงในไฟล์ authorized_keys บนคอมพิวเตอร์แต่ละเครื่องที่ใช้งานssh-copy-idหรือคล้ายกัน
tplive

0

นี่คือวิธีแก้ปัญหาตามลำดับขั้นพื้นฐานโดยสมมติว่าคุณรู้ชื่อโฮสต์หรือที่อยู่ IP ทั้งหมดของคอมพิวเตอร์ในเครือข่ายและคุณได้เปิดใช้งานการรับรองความถูกต้องของรหัสสาธารณะ ดูที่นี่สำหรับรายละเอียดเพิ่มเติม - https://man.openbsd.org/ssh-keygen.1

  1. สร้างไฟล์ใหม่เช่น hosts.txt
  2. เติมแต่ละบรรทัดของไฟล์ดังกล่าวด้วยที่อยู่ ip หรือชื่อโฮสต์ของกล่องบน LAN ของคุณ
  3. ทำซ้ำแต่ละบรรทัดในไฟล์และติดตั้งซอฟต์แวร์บนโฮสต์เช่นนั้น

for i in `cat hosts.txt`; do ssh $i apt-get --assume-yes install spyder; echo ; done


@bunnydrug ชื่อโฮสต์สำหรับคอมพิวเตอร์ทุกเครื่องใน LAB ของฉันคือ CSLAB และรหัสผ่านคือ E201 ดังนั้นฉันควรเขียนอะไรในhosts.txtไฟล์
Abhishek Kamal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.