Score:0

เรียกใช้เชลล์สคริปต์ที่มองเห็นได้ในรูปแบบ sudo เมื่อเข้าสู่ระบบในโฮมไดเร็กทอรี

ธง jp

ฉันมีสคริปต์ที่ใช้งานได้ดีเมื่อฉันใส่มันด้วยตนเองใน /home/อูบุนตู ไดเรกทอรีและดำเนินการด้วยตนเองด้วยสิทธิ์ sudo (ต้องเรียกใช้จากไดเรกทอรี $HOME)

เส้นทางสคริปต์คือ:

/home/ubunt/script.sh

..และมีลักษณะดังนี้

#!/bin/bash
sudo add-apt-repository -y ppa:maas/3.0-next
อัปเดต sudo apt
sudo apt install -y maas jq markdown nmap traceroute git curl wget zfsutils-linux cloud-image-utils virtinst qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils whois
sudo maas createadmin --ชื่อผู้ใช้ ubuntu --รหัสผ่าน รหัสผ่าน --email [email protected] --ssh-import gh:wt-b
...

ฉันต้องการทำให้มันทำงานเมื่อเข้าสู่ระบบ (ครั้งเดียว) และฉันต้องการดูว่าเกิดอะไรขึ้น (บรรทัด cmd ที่มองเห็นได้)

ฉันได้ตรวจสอบตัวเลือกกับ /etc/init.d โฟลเดอร์ (และรวมถึง /lib/systemd/ระบบ โฟลเดอร์ที่ฉันเปิดใช้บริการผ่าน systemctl) เรียกใช้สคริปต์ผ่านบรรทัดคำสั่งต่อไปนี้

#!/bin/bash
คำพังเพยเทอร์มินัล -e '/home/ubuntu/script.sh'

หรือไม่มีส่วนต่อประสาน cmd ที่มองเห็นได้

#!/bin/bash
ที่มา /home/ubuntu/script.sh

แต่มันล้มเหลวและติดตั้งส่วนประกอบบางอย่างเท่านั้น

ความคิดใด ๆ ? ขอบคุณ

Score:2
ธง cn

จำเป็นต้องติดตั้งแพ็คเกจโดยอัตโนมัติซ้ำแล้วซ้ำอีกโดยอัตโนมัติระหว่างการเข้าสู่ระบบ กระนั้น คุณ​อาจ​มี​เหตุ​ผล​ที่​ดี.

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

  1. เปลี่ยนสคริปต์ของคุณและลบ ซูโด. คุณจะเรียกใช้สคริปต์ทั้งหมดในฐานะรูท
  2. Autostart Gnome Terminal ซึ่งเป็นโปรแกรมจำลองเทอร์มินัลเริ่มต้นของเดสก์ท็อป Ubuntu ดังต่อไปนี้: gnome-terminal -- sudo <เส้นทางไปยังสคริปต์ของคุณ>

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

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

อ่าน -rsn1 =p $'กดปุ่มเพื่อดำเนินการต่อ\n'
Andy McRae avatar
jp flag
สวัสดี ขอบคุณสำหรับคำตอบของคุณ ดังนั้นฉันจึงสร้างไฟล์ sh.desktop โดยใส่รหัส [รายการเดสก์ท็อป] Type=ใบสมัคร Exec="/home/ubuntu/script.sh" ซ่อน = เท็จ ไม่แสดงผล=เท็จ X-GNOME-เปิดใช้การเริ่มอัตโนมัติ=จริง Name[en_IN]=มาส ชื่อ=MaasSetup ความคิดเห็น[en_IN]=มาส Comment=MaasSetup และฉันออกจากระบบและเข้าสู่ระบบอีกครั้ง แต่สิ่งนี้ไม่ได้ทำอะไรเลย ฉันตรวจสอบเส้นทางแล้วและถูกต้อง ฉันคิดว่างานเริ่มต้นทำงานเฉพาะกับไฟล์ .desktop ไม่ใช่กับไฟล์ sh ใช่ไหม ทักทาย
vanadium avatar
cn flag
คุณสามารถเปิด "แอปพลิเคชันเริ่มต้น" เพื่อเพิ่มคำสั่งเริ่มต้น นั่นจะสร้าง .desktop launcher ในโฟลเดอร์ autostart เกี่ยวกับคำสั่งที่จำเป็น อ่านคำตอบของฉันอีกครั้งอย่างระมัดระวัง
Andy McRae avatar
jp flag
ขอบคุณ. ถ้าฉันยกนิ้วให้หนึ่งนิ้วได้ มันจะดีมาก
Score:0
ธง jp

โอเค ฉันพบวิธีแก้ปัญหาด้วยงานเริ่มต้นที่กล่าวถึงโดยวานาเดียม

แต่ฉันคิดว่าฉันจะทำให้ชัดเจนกว่านี้อีกสักหน่อย

ฉันใช้ 3 ไฟล์:

สองแห่งตั้งอยู่ใน /บ้าน/อูบุนตู/ โฟลเดอร์

  1. /home/ubuntu/init.sh

และซึ่งประกอบด้วย

#!/bin/bash
gnome-terminal -- sudo '/home/ubuntu/script.sh'
  1. /home/ubuntu/script.sh

ซึ่งมีรหัสจริงที่ฉันต้องการดำเนินการ

#!/bin/bash
sudo add-apt-repository -y ppa:maas/3.0-next
อัปเดต sudo apt
sudo apt install -y maas jq markdown nmap traceroute git curl wget zfsutils-linux cloud-image-utils virtinst qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils whois
sudo maas createadmin --ชื่อผู้ใช้ ubuntu --รหัสผ่าน รหัสผ่าน --email [email protected] --ssh-import gh:wt-b

...

จากนั้นเราจำเป็นต้องเปิดใช้งานแอปพลิเคชันเริ่มต้นโดยใส่ไฟล์ปรับแต่งในไฟล์ /etc/xdg/autostart โฟลเดอร์ 3) /etc/xdg/autostart/conf.desktop

ซึ่งมีข้อมูลดังต่อไปนี้:

[รายการเดสก์ท็อป]
เวอร์ชัน=1.0
Name=ลอร์ดออฟสปาเก็ตตี้
ความคิดเห็น = สปาเก็ตตี้เป็นสิ่งที่ดี
Exec=/home/ubuntu/init.sh
เส้นทาง=/บ้าน/อูบุนตู/
เทอร์มินัล=จริง
Type=ใบสมัคร
X-GNOME-เปิดใช้การเริ่มอัตโนมัติ=จริง
หมวดหมู่=ยูทิลิตี้;การพัฒนา

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

raj avatar
cn flag
raj
คุณไม่จำเป็นต้องสร้างไฟล์ด้วยตนเองในขั้นตอนที่ 3) ตามที่ @vanadium พูดไว้ ให้เปิด "Startup Applications" จาก System Tools และเพิ่ม `/home/ubuntu/init.sh` ในรายการโปรแกรมที่เริ่มโดยอัตโนมัติด้วยเซสชัน อย่างไรก็ตาม เนื่องจากคุณได้ดำเนินการด้วยตนเองแล้ว ไม่จำเป็นต้องดำเนินการนี้อีก :)
Andy McRae avatar
jp flag
ที่จริงฉันต้องทำแบบนั้นเพราะมันเป็นส่วนหนึ่งของกระบวนการอัตโนมัติที่เราปรับใช้เครื่องจักรหลายเครื่อง และฉันไม่สามารถเริ่มไฟล์ script.sh ได้โดยตรงจากไฟล์ .desktop เนื่องจากไฟล์ .desktop ไม่สามารถเริ่ม gnome-desktop ได้โดยตรง หวังว่ามันจะช่วยได้

โพสต์คำตอบ

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