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

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

13
วิธีการตรวจสอบว่าตัวแปร bash ว่างเปล่า?
เป็นวิธีที่ดีที่สุดในการตรวจสอบว่าตัวแปรใน bash ว่างเปล่า ("") คืออะไร? ฉันเคยได้ยินว่าขอแนะนำให้ฉันทำ if [ "x$variable" = "x" ] นั่นเป็นวิธีที่ถูกต้องหรือไม่ (ต้องมีสิ่งที่ตรงไปตรงมามากขึ้น)
765 bash  scripting 

5
ความแตกต่างระหว่างวงเล็บเหลี่ยมคู่และเดี่ยวในทุบตีคืออะไร?
ฉันแค่สงสัยว่าความแตกต่างระหว่างอะไร [[ $STRING != foo ]] และ [ $STRING != foo ] คือนอกเหนือจากที่หลังเป็นไปตาม posix พบใน sh และอดีตเป็นนามสกุลที่พบในทุบตี
426 linux  unix  bash  scripting  shell 

11
รันไฟล์. bat ในภารกิจที่กำหนดเวลาไว้โดยไม่มีหน้าต่าง
ฉันมีงานที่กำหนดเวลาไว้ซึ่งเริ่มสคริปต์ชุดที่ทำงานrobocopyทุกชั่วโมง ทุกครั้งที่มีหน้าต่างปรากฏขึ้นบนเดสก์ท็อปด้วยเอาท์พุทของ robocopy ซึ่งฉันไม่ต้องการเห็น ฉันจัดการเพื่อให้หน้าต่างปรากฏลดลงโดยทำให้งานตามกำหนดเวลาทำงาน cmd /c start /min mybat.bat แต่นั่นทำให้ฉันมีหน้าต่างคำสั่งใหม่ทุกชั่วโมง ฉันรู้สึกประหลาดใจกับสิ่งนี้ที่ได้รับcmd /c"ดำเนินการคำสั่งที่ระบุโดยสตริงและยุติแล้ว" - ฉันต้องเข้าใจเอกสารผิด มีวิธีเรียกใช้สคริปต์ชุดงานโดยไม่โผล่หน้าต่าง cmd หรือไม่

7
“ -bash:!”: ไม่พบเหตุการณ์ "
ลองดำเนินการดังต่อไปนี้ภายใต้ bash shell echo "Reboot your instance!" ในการติดตั้งของฉัน: root@domU-12-31-39-04-11-83:/usr/local/bin# bash --version GNU bash, version 4.1.5(1)-release (i686-pc-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the …
114 linux  bash  scripting  shell 

8
วิธีสร้างสคริปต์ทุบตีพิมพ์ทุกคำสั่งก่อนที่จะดำเนินการ?
ตัวอย่างเช่นฉันมีไฟล์ทุบตีง่าย #!/bin/bash cd ~/hello ls ฉันจะทำให้มันแสดงทุกคำสั่งก่อนดำเนินการได้อย่างไร เพียงผลตรงข้ามของ "@echo off" ในการเขียนสคริปต์ชุด windows

7
เหตุใดจึงต้องใช้ Chef / Puppet เหนือเชลล์สคริปต์
ใหม่สำหรับเครื่องมือ Puppet และ Chef ดูเหมือนว่างานที่พวกเขาทำสามารถทำได้ด้วยการเขียนสคริปต์เชลล์ บางทีมันอาจจะทำในเชลล์สคริปต์จนกระทั่งสิ่งเหล่านี้มาพร้อมกัน ฉันจะยอมรับว่าพวกเขาอ่านง่ายขึ้น แต่มีข้อได้เปรียบอื่น ๆ ของเชลล์สคริปต์นอกเหนือจากการอ่านได้หรือไม่?

12
ฉันจะเรียกใช้คำสั่งที่ซับซ้อนตามอำเภอใจโดยใช้ sudo over ssh ได้อย่างไร
ฉันมีระบบที่สามารถเข้าสู่ระบบภายใต้ชื่อผู้ใช้ของฉัน (myuser) แต่ฉันต้องเรียกใช้คำสั่งในฐานะผู้ใช้อื่น (scriptuser) จนถึงตอนนี้ฉันได้พบกับสิ่งต่อไปนี้เพื่อเรียกใช้คำสั่งที่ฉันต้องการ: ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\"" หาก แต่เมื่อฉันพยายามเรียกใช้คำสั่งที่ซับซ้อนมากขึ้นเช่น[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"ฉันประสบปัญหากับการอ้างอิงอย่างรวดเร็ว ฉันไม่แน่ใจว่าฉันจะส่งคำสั่งที่ซับซ้อนตัวอย่างนี้ไปได้bash -cอย่างไรเมื่อ\"จำกัด ขอบเขตของคำสั่งที่ฉันส่งไปแล้ว (และฉันไม่รู้วิธีการอ้างอิง / tmp / บางไดเร็กทอรีซึ่งรวมถึงช่องว่างด้วย มีวิธีการแก้ปัญหาทั่วไปที่ช่วยให้ฉันสามารถส่งคำสั่งใด ๆ ไม่ว่าจะมีความซับซ้อน / บ้าอ้างถึงหรือเป็นข้อ จำกัด บางอย่างที่ฉันได้มาถึง? มีวิธีแก้ปัญหาอื่น ๆ
80 ssh  bash  scripting  sudo 

6
สิ่งที่ส่งผ่านพารามิเตอร์ -xe ไปที่ / bin / bash ทำ
สิ่งที่ชื่อกล่าว ฉันไม่มีโชคมากในการค้นหาเอกสารที่เหมาะสมเพื่อดูว่า -xe ทำอะไรในกรณีการใช้งานต่อไปนี้: #!/bin/bash -xe พารามิเตอร์เหล่านั้นทำอะไรและอยู่ที่ไหนในเอกสาร
59 bash  scripting 

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

8
เครื่องมือทดสอบบัญชีผู้ใช้และรหัสผ่าน (ทดสอบล็อกอิน)
ใช่ฉันสามารถติดตั้ง VM หรือรีโมตลงในบางสิ่งและลองใช้รหัสผ่าน ... ฉันรู้ ... แต่มีเครื่องมือหรือสคริปต์ที่จะจำลองการเข้าสู่ระบบเพียงพอที่จะยืนยันหรือปฏิเสธว่ารหัสผ่านนั้นถูกต้องหรือไม่ สถานการณ์: รหัสผ่านของบัญชีบริการเซิร์ฟเวอร์ "ลืม" ... แต่เราคิดว่าเรารู้ว่ามันคืออะไร ฉันต้องการส่งผ่านข้อมูลรับรองไปยังบางสิ่งและให้ส่งกลับด้วย "รหัสผ่านที่ถูกต้อง" หรือ "รหัสผ่านไม่ถูกต้อง" ฉันยังคิดเกี่ยวกับสคริปต์การจับคู่ไดรฟ์ด้วยบัญชีผู้ใช้และรหัสผ่านที่ถูกส่งผ่านเพื่อดูว่าไดรฟ์นั้นประสบความสำเร็จหรือไม่ แต่หายไปในตรรกะของการทำงานอย่างถูกต้อง ... สิ่งที่ต้องการ: - สคริปต์ขอชื่อผู้ใช้ผ่าน msgbox - สคริปต์ขอรหัสผ่านผ่าน msgbox - สคริปต์พยายามแมปไดรฟ์กับการแบ่งปันทั่วไปที่ทุกคนมีสิทธิ์เข้าถึงไดรฟ์ - สคริปต์ unmaps หากประสบความสำเร็จ -script ส่งคืนป๊อปอัป msgbox ระบุว่า " รหัสผ่าน" ความช่วยเหลือใด ๆ ที่ได้รับการชื่นชม ... คุณคิดว่านี่จะเป็นเหตุการณ์ที่เกิดขึ้นได้ยากโดยไม่ต้องใช้เครื่องมือในการสนับสนุน แต่ ... ดี ....

5
ฉันจะบันทึกการกระทำของสคริปต์ทุบตีทั้งหมดได้อย่างไร
ฉันต้องการบันทึกข้อมูลบันทึกทั้งหมดซึ่งมีทั้งข้อความแสดงข้อผิดพลาดจากเอาต์พุตสคริปต์ของฉันและเปลี่ยนเส้นทางทั้งหมดเป็นไฟล์บันทึก ฉันมีสคริปต์เหมือนด้านล่าง: #!/bin/bash ( echo " `date` : part 1 - start " ssh -f admin@server.com 'bash /www/htdocs/server.com/scripts/part1.sh logout exit' echo " `date` : sleep 120" sleep 120 echo " `date` : part 2 - start" ssh admin@server.com 'bash /www/htdocs/server.com/scripts/part2.sh logout exit' echo " `date` : part 3 - start" …

8
รันเชลล์สคริปต์ในฐานะผู้ใช้อื่น
เป็นวิธีที่ดีในการใช้งานเชลล์สคริปต์ในฐานะผู้ใช้อื่น ฉันใช้ Debian etch และฉันรู้ว่าฉันต้องการเลียนแบบผู้ใช้คนใด ถ้าฉันทำด้วยตนเองฉันจะทำ: su postgres ./backup_db.sh /tmp/test exit เนื่องจากฉันต้องการทำให้กระบวนการเป็นแบบอัตโนมัติฉันต้องการวิธีเรียกใช้ backup_db.sh ในฐานะ postgres (สืบทอดสภาพแวดล้อม ฯลฯ ) ขอบคุณ!

10
ฉันจะตรวจสอบสถานะการสร้างของการสร้างเจนกินส์จากบรรทัดคำสั่งได้อย่างไร
ฉันจะตรวจสอบสถานะการสร้างเจนกินส์โดยไม่เปลี่ยนเป็นเบราว์เซอร์ได้อย่างไร หากต้องการฉันสามารถสร้างสคริปต์โดยใช้ JSON API แต่ฉันสงสัยว่ามีบางอย่างในตัวอยู่แล้ว

5
จำเป็นต้องเพิ่มคำสั่ง“ รอ” ลงในสคริปต์ Powershell
นี่คือรหัสปัจจุบันของฉัน: Write-output “ENTER THE FOLLOWING DETAILS - When Creating Multiple New Accounts Go to EMC hit F5(refresh) and make sure previous new account is listed before proceeding to the next one” $DName = Read-Host “User Diplay Name(New User)" $RUser = Read-Host "Replicate User(Database Grab)" $RData = ((Get-Mailbox -Identity $RUser).Database).DistinguishedName $REmailInput …

4
สิ่งที่จำเป็นสำหรับบริการ linux ที่จะรองรับโดย chkconfig?
ฉันพยายามที่จะเพิ่มการเริ่มต้นอัตโนมัติเมื่อบูทไทม์เซอร์วิส linux ผ่านทาง chkconfig -add <servicename> และฉันได้รับข้อความแจ้งว่า service <servicename> does not support chkconfig ฉันใช้ Red Hat Enterprise 4 สคริปต์ที่ฉันพยายามเพิ่มในการเริ่มระบบอัตโนมัติในเวลาบูตมีดังต่อไปนี้: #!/bin/sh soffice_start() { if [ -x /opt/openoffice.org2.4/program/soffice ]; then echo "Starting Open Office as a Service" #echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager -nofirststartwizard" /opt/openoffice.org2.4/program/soffice -headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager" -nofirststartwizard & else echo "Error: Could …

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