คำถามติดแท็ก scripting

รูปแบบของการเขียนโปรแกรมคอมพิวเตอร์ที่ - ในบริบทของการบริหารระบบ - ยืมตัวมันเองให้ทำงานอัตโนมัติ

8
มีเหตุผลที่จะใช้ทุบตีมากกว่า zsh หรือไม่ [ปิด]
ฉันอยากรู้ว่าทำไมคนเราถึงต้องการใช้ bash แทน zsh ฉันหมายถึง zsh เต็มที่เข้ากันได้กับ bash อย่าเข้าใจฉันผิด: ฉันไม่ชอบทุบตีหรืออะไรก็ตาม ฉันแค่อยากรู้ว่ามีประโยชน์ในการใช้มันมากกว่า zsh หรือไม่ ดังนั้นมีเหตุผลอะไรที่จะใช้ทุบตีมากกว่า zsh?
33 bash  scripting  shell  zsh 

5
สถานที่ถาวรในการติดตั้งสคริปต์ทุบตีที่กำหนดเองอยู่ที่ไหน
ฉันกำลังจะติดตั้ง "leiningen" ซึ่งเป็นสคริปต์ทุบตีสำหรับภาษาการเขียนโปรแกรม clojure ที่มีประโยชน์มากมาย ... ... แต่ฉันไม่แน่ใจว่ามันเหมาะสมที่จะ -put- สคริปต์ปฏิบัติการใน linux ระบบเพื่อให้มันใช้ได้อย่างถาวรและมีเสถียรภาพ ฉันไม่คิดว่าที่ใดก็ได้ในบ้าน / เหมาะสม แต่ฉันไม่รู้ว่าควรจะใช้ไดเรกทอรี / ไดเรกทอรีใด / usr / share?

5
ผู้ดูแลระบบ Linux สามารถพัฒนาทักษะการสคริปต์เชลล์และระบบอัตโนมัติได้อย่างไร
ในองค์กรของฉันฉันทำงานกับกลุ่มของพนักงาน NOC วิศวกรรุ่นแรกและวิศวกรอาวุโสจำนวนหนึ่ง ทั้งหมดมุ่งเน้นไปที่ Linux ขั้นตอนหนึ่งที่น่าสนใจในการเพิ่มความสามารถของ บริษัท คือมีเส้นทางจาก NOC ไปจนถึงวิศวกรรมอันดับอาวุโส การดูกลุ่มคนที่มีความสามารถเป็นผู้มาใหม่ฉันเห็นว่ามีการแบ่งชุดทักษะที่มีแนวโน้มที่จะเติบโตตลอดเวลา ... มีวิศวกรที่รู้จักเทคโนโลยีหนึ่งหรือหลายอย่างดีและแช่อยู่ตลอดเวลาเช่น MySQL, ไฟร์วอล, ที่เก็บ SAN, โหลดบาลานซ์ ... มีคนอื่นที่เป็นคนทั่วไปและสามารถนำทางเทคโนโลยีหลายอย่างได้ ทั้งหมดเรียนรู้ Linux (คำสั่งกระบวนการ) เพียงพอที่จะทำสิ่งที่พวกเขาต้องการและใช้ในชีวิตประจำวัน ปัจจัยที่แตกต่างระหว่างพนักงานบางคนก็คือวิธีที่พวกเขายอมรับการเขียนสคริปต์อัตโนมัติและวิธีการจัดการการกำหนดค่า ตัวอย่างเช่นเรามีวิศวกรสองคนที่ทำงานเป็นกลุ่มของ Amazon AWS CloudFormationและอีกคนหนึ่งที่จัดการโครงสร้างพื้นฐานหุ่นกระบอกส่วนใหญ่ บางทีหนึ่งในสี่ของวิศวกรมีความเชี่ยวชาญในการเขียนสคริปต์เชลล์ของ BASH เมื่อมองถึงสิ่งนี้ในบริบทของความต้องการDevOps ที่สูงอย่างไม่น่าเชื่อในตลาดงานฉันอยากรู้ว่าองค์กรอื่น ๆ ส่งเสริมการพัฒนาทักษะเหล่านี้และพัฒนาความสามารถภายในของพวกเขาได้อย่างไร การเขียนสคริปต์ดูเหมือนจะเป็นแนวคิดที่สอนไม่ได้โดยเฉพาะ ดูแลระบบปรับปรุงการเขียนสคริปต์เชลล์ได้อย่างไร ยังมีที่สำหรับวิศวกรที่ไม่ทำหรือไม่สามารถติดตามกระบวนทัศน์ DevOps ได้หรือไม่? เราเพียงแค่คิดว่าบางคนจะถูกทิ้งไว้ข้างหลังในขณะที่เทคโนโลยีเหล่านี้วิวัฒนาการ? ไม่เป็นไร


14
ฉันจะรู้ได้อย่างไรว่า Linux เวอร์ชันใดที่ใช้งานอยู่
บางครั้งสคริปต์ของคุณจำเป็นต้องทำงานแตกต่างกันไปใน Linux ที่แตกต่างกัน ฉันจะทราบได้อย่างไรว่าสคริปต์รุ่นใดของ Linux กำลังทำงานอยู่
29 linux  scripting 

8
เมนูแบบเลือกได้หลายแบบในสคริปต์ทุบตี
ฉันเป็นมือใหม่ แต่ฉันต้องการสร้างสคริปต์ที่ฉันต้องการอนุญาตให้ผู้ใช้เลือกหลายตัวเลือกจากรายการตัวเลือก โดยพื้นฐานแล้วสิ่งที่ฉันต้องการคือสิ่งที่คล้ายกับตัวอย่างด้านล่าง: #!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done (ที่มาจากhttp://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1 ) อย่างไรก็ตามสคริปต์ของฉันจะมีตัวเลือกเพิ่มเติมและฉันต้องการอนุญาตให้เลือกหลายรายการ ดังนั้นสิ่งนี้: 1) ตัวเลือก 1 2) ตัวเลือก 2 3) ตัวเลือก …
28 bash  scripting 

3
ส่งคำตอบเริ่มต้นสำหรับคำถามติดตั้งแพ็คเกจ apt-get หรือไม่
ฉันพยายามเขียนสคริปต์การกำหนดค่าสำหรับเซิร์ฟเวอร์ใหม่และหนึ่งในขั้นตอนแรกคือการติดตั้งแพคเกจที่จำเป็นเช่น MySQL, phpMyAdmin และอื่น ๆ โดยใช้apt-get installอย่างไรก็ตามเมื่อ dpkg พยายามกำหนดค่าให้พวกเขาถาม ตัวเลือกไม่กี่อย่างเช่นรหัสผ่านรูทของ MySQL, รหัสผ่าน phpMyAdmin, เซิร์ฟเวอร์ที่ใช้ ฯลฯ เนื่องจากฉันจะส่งต่อสคริปต์นี้ไปให้เพื่อนร่วมงานที่ไม่น่าจะอ่านคำแนะนำและความปรารถนาของฉันที่จะเริ่มต้นและเดินจากไปฉันจึงอยากรู้วิธีส่งผ่านคำตอบ "เริ่มต้น" / ค่าที่จะใช้ ซึ่งอาจรวมถึงชื่อผู้ใช้ / รหัสผ่าน / ค่าไดนามิกอื่น ๆ ที่ส่งผ่านบนบรรทัดคำสั่ง - ฉันรู้ว่าการมีรหัสผ่านในสคริปต์เป็นปัญหาด้านความปลอดภัย แต่ฉันยินดีที่จะเพิกเฉยต่อมันโดยเฉพาะอย่างยิ่งในแง่ของการติดตั้งแพคเกจโดยทั่วไปซึ่งคำตอบนี้จะบอกเป็นนัย

13
ต้องการศูนย์นำหน้าสำหรับสคริปต์ชุดงานโดยใช้ตัวแปร% time%
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันพบข้อผิดพลาดในสคริปต์ DOS ที่ใช้ข้อมูลวันที่และเวลาในการตั้งชื่อไฟล์ ปัญหาคือฉันลงเอยด้วยช่องว่างเพราะตัวแปรเวลาไม่ได้ให้ศูนย์นำหน้าโดยอัตโนมัติสำหรับชั่วโมง <10 ดังนั้นการเรียกใช้> echo% เวลา% ให้ผลตอบแทน: '9: 29: 17.88' ไม่มีใครรู้วิธีที่จะเป็นศูนย์นำหน้าเพื่อแก้ไขปัญหานี้แบบมีเงื่อนไข? ข้อมูลเพิ่มเติม: คำสั่งชื่อไฟล์ของฉันคือ: set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log ซึ่งจบลงด้วยการเป็น: C: \ Temp \ robolog_20100602_ 93208.log (สำหรับ 9:23 ในตอนเช้า) คำถามนี้เป็นคำถามที่เกี่ยวข้องกับคนนี้ ขอบคุณ

7
Bash Scripting: ต้องการให้สคริปต์ทำงานเป็น root (หรือด้วย sudo)
ฉันพยายามเขียนสคริปต์ทุบตี (ใน Ubuntu) ที่จะสำรองข้อมูลไดเรกทอรีโดยใช้ tar ฉันจะตรวจสอบในสคริปต์เพื่อให้สามารถทำงานในฐานะ root (หรือด้วย sudo) ได้อย่างไร ตัวอย่างเช่นหากผู้ใช้เรียกใช้สคริปต์ควรบอกว่าสคริปต์นี้จะต้องทำงานด้วยสิทธิ์ sudo แล้วออกจาก หากสคริปต์ทำงานเป็นรูทสคริปต์จะดำเนินการผ่านการตรวจสอบต่อไป ฉันรู้ว่าต้องมีวิธีแก้ปัญหาที่ง่ายฉันไม่สามารถค้นพบได้โดย googling

13
วิธีส่งเสริมให้ผู้ดูแลระบบ Windows เลือกใช้งานสคริปต์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เมื่อฉันทำงานเป็นผู้ดูแลระบบในงานแรกของฉันฉันผิดหวังที่กระบวนการดูแลระบบของเรากับเซิร์ฟเวอร์ Windows เป็นชุดของจุดและคลิก เราไม่สามารถเทียบได้กับระดับประสิทธิภาพกับเซิร์ฟเวอร์ Unix ที่มีกลุ่มเชลล์สคริปต์เพื่อทำงานให้เป็นจำนวนมากโดยอัตโนมัติ ในไม่ช้าฉันก็อ่านเกี่ยวกับ WSH และADSIและไม่เสียเวลาในการเรียนรู้ว่าระบบอัตโนมัติมากแค่ไหนที่ฉันสามารถทำได้ด้วยการเขียนสคริปต์ แม้ว่าจะมีปัญหาใหญ่ - เกือบจะไม่มีเพื่อนร่วมงาน Windows ของฉันที่สนใจเรียนรู้การเขียนสคริปต์จริงๆ ดูเหมือนว่าพวกเขาจะมีความสุขกับการคลิกเมาส์ด้วยตนเองและไม่เคยตื่นเต้นกับการใช้สคริปต์ในการทำงานแทนพวกเขา ฉันพยายามโน้มน้าวให้พวกเขาหยิบทักษะการเขียนสคริปต์แม้จะมีประสิทธิภาพเพิ่มขึ้นอย่างชัดเจน ฉันออกจากงานนั้นเพื่อหาอาชีพพัฒนาซอฟต์แวร์เต็มเวลาหลังจากนั้น เกือบทศวรรษในการทำงานในสภาพแวดล้อมที่หลากหลายและลูกค้าที่แตกต่างกันฉันยังคงพบว่าผู้ดูแลระบบ Windows ส่วนใหญ่มี "อารมณ์" ทั่วไปที่พวกเขาจะหลีกเลี่ยงการเขียนสคริปต์ให้มากที่สุด แม้จะมีระดับที่เพิ่มขึ้นของการเข้าถึงเทคโนโลยีเซิร์ฟเวอร์ Windows ที่เปิดขึ้นสำหรับการเขียนสคริปต์และระบบอัตโนมัติ ฉันเกือบจะแน่ใจว่าผู้ดูแลระบบส่วนใหญ่เป็นผู้ดูแลระบบอย่างแม่นยำเพราะพวกเขาเกลียดการปฏิบัติหน้าที่การเขียนโปรแกรมทุกชนิด มีวิธีใดบ้างในการกระตุ้นและกระตุ้นผู้ดูแลระบบว่าการเขียนสคริปต์สามารถช่วยพวกเขาได้จริงในระยะยาว

3
ฉันสามารถใช้ rsync เพื่อสร้างรายการไฟล์ที่เปลี่ยนแปลงเท่านั้นได้หรือไม่
ฉันกำลังใช้ rsync ในสคริปต์ทุบตีเพื่อให้ไฟล์ซิงค์ระหว่างเซิร์ฟเวอร์สองสามตัวกับ NAS ปัญหาหนึ่งที่ฉันพบคือพยายามสร้างรายการไฟล์ที่มีการเปลี่ยนแปลงจากระหว่าง rsync ความคิดคือว่าเมื่อผมทำงาน rsync ฉันสามารถส่งออกไฟล์ที่มีการเปลี่ยนแปลงลงในแฟ้มข้อความ - มากขึ้นหวังสำหรับอาร์เรย์ในหน่วยความจำ - แล้วก่อนสคริปต์ที่มีอยู่ฉันสามารถเรียกใช้ chown บนเพียงไฟล์เปลี่ยน มีใครพบวิธีที่จะทำงานเช่นนี้หรือไม่? # specify the source directory source_directory=/Users/jason/Desktop/source # specify the destination directory # DO NOT ADD THE SAME DIRECTORY NAME AS RSYNC WILL CREATE IT FOR YOU destination_directory=/Users/jason/Desktop/destination # run the rsync command rsync -avz …
26 bash  scripting  rsync 

3
สำหรับการนับวนจาก 1 ถึง n ในสคริปต์ค้างคาวของ windows
ฉันต้องการเรียกใช้คำสั่ง windows n ครั้งภายในไฟล์สคริปต์ค้างคาว ฉันรู้วิธีการทำเช่นนี้ในภาษาการเขียนโปรแกรมต่าง ๆ แต่ไม่สามารถจัดการเพื่อทำให้ถูกต้องบนบรรทัดคำสั่ง windows :-( ฉันคาดหวังบางอย่างเช่น for(int i = 0; i < 100; i++) { // do something } หรือแม้กระทั่งสิ่งนี้ (แม้ว่าจะไม่ทั้งหมดอย่างจริงจัง) 1.upto(100, { // do something }) ขอบคุณ! แก้ไข ฉันสามารถเขียนโปรแกรมใน java, perl, c หรืออะไรก็ตามที่จะสร้างค้างคาวสคริปต์ที่มีลักษณะเช่นนี้ for %%N in (1 2 3 4 5 6 7 8 9 …

4
วิธีกำหนดค่า postfix ให้ไพพ์อีเมลขาเข้าทั้งหมดไปยังสคริปต์ได้อย่างไร
ใช้ postfix ฉันต้องการให้จดหมายขาเข้าทั้งหมดไปยังที่อยู่ใด ๆ (รวมถึงที่ไม่ได้แมปกับผู้ใช้ในพื้นที่) ที่จะถูกไพพ์ไปยังสคริปต์ ฉันได้ลองกำหนดค่าmailbox_commandใน/etc/postfix/main.cf: mailbox_command = /path/to/myscript.py วิธีนี้ใช้งานได้ดีหากผู้ใช้เป็นผู้ใช้ภายใน แต่ล้มเหลวสำหรับผู้ใช้ที่ "ไม่รู้จัก" ที่ไม่มีนามแฝง ฉันพยายามตั้งค่าluser_relayให้กับผู้ใช้ท้องถิ่น แต่ pre-empts mailbox_commandนี้และดังนั้นคำสั่งจะไม่ถูกเรียกใช้ ฉันลองตั้งค่าlocal_recipient_maps=(สตริงว่าง) แต่ข้อความนั้นยังคงเด้ง มีการเรียกใช้เวทมนต์ที่ฉันสามารถใช้เพื่อให้ผู้ใช้ที่รู้จักและไม่รู้จักทั้งหมดไปที่สคริปต์ด้วยหรือไม่ เต็มรูปแบบ/etc/postfix/main.cfดังต่อไปนี้ - เป็น Ubuntu เริ่มต้น 10.04 ยกเว้นmailbox_commandบรรทัด: # See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line …

9
ฉันจะอ่านหลายบรรทัดจาก STDIN ลงในตัวแปรได้อย่างไร
ฉันได้คำถามนี้ไปแล้วก็ไม่มีประโยชน์ ฉันกำลังสร้างกระบวนการสร้างที่นี่โดยอัตโนมัติและสิ่งที่ฉันพยายามทำคือรับหมายเลขรุ่นและคำอธิบายเล็ก ๆ ของโครงสร้างซึ่งอาจเป็นหลายบรรทัด ระบบนี้ทำงานบนคือ OSX 10.6.8 ฉันเห็นทุกอย่างตั้งแต่ใช้ CAT ไปจนถึงการประมวลผลแต่ละบรรทัดตามที่จำเป็น ฉันคิดไม่ออกว่าฉันควรใช้อะไรและทำไม ความพยายามในการ read -d '' versionNotes ผลลัพธ์เป็นอินพุตที่อ่านไม่ออกถ้าผู้ใช้ต้องใช้คีย์ backspace นอกจากนี้ยังไม่มีวิธีที่ดีในการยุติอินพุตเนื่องจาก ^ D ไม่ได้ยุติและ ^ C เพิ่งออกจากกระบวนการ read -d 'END' versionNotes ใช้งานได้ ... แต่ยังอ่านไม่ออกถ้าจำเป็นต้องใช้ปุ่ม Backspace while read versionNotes do echo " $versionNotes" >> "source/application.yml" done ไม่สิ้นสุดอินพุตอย่างถูกต้อง (เพราะฉันสายเกินไปที่จะค้นหาการจับคู่กับสตริงว่าง)
24 bash  scripting 

5
สคริปต์ติดตั้ง MySQL บน Ubuntu
ฉันต้องเขียนสคริปต์ที่จะสร้างเซิร์ฟเวอร์ของฉันจากการติดตั้งเซิร์ฟเวอร์ Ubuntu ใหม่ สิ่งต่าง ๆ เช่น Apache และ PHP นั้นจำเป็นต้องติดตั้ง MySQL ปัญหาเดียวที่นี่คือเมื่อฉันติดตั้ง MySQL ด้วย apt-get ณ จุดหนึ่งการติดตั้งจะเปิดกล่องโต้ตอบที่ให้ฉันพิมพ์รหัสผ่านรูทของฉัน คือต้องมีปฏิสัมพันธ์กับมนุษย์ ฉันจะข้ามหน้าจอนี้ระหว่างการติดตั้งและหลีกเลี่ยงการโต้ตอบกับมนุษย์ในขณะที่ยังใช้ apt-get เพื่อติดตั้ง MySQL ได้อย่างไร

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