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

สคริปต์คือลำดับของคำสั่งหรือคำสั่งที่ดำเนินการโดยโปรแกรมล่ามแทนที่จะรวบรวมเป็นโปรแกรมปฏิบัติการแบบสแตนด์อโลน

4
คำแนะนำสำหรับการจัดการคีย์ SSH
อะไรคือวิธีปฏิบัติที่ดีที่สุดที่คุณพบในการจัดการคู่กุญแจ SSH จำนวนมาก? ฉันใช้ SSH เพื่อเชื่อมต่อกับระบบต่าง ๆ ทั้งที่บ้านและที่ทำงาน ปัจจุบันฉันมีคอลเลกชันคู่ขนาดเล็กที่สามารถจัดการได้สำหรับทั้งระบบงานและระบบภายในบ้าน ฉันมีสคริปต์ที่สร้าง keypair ที่มีชื่อดังนั้นฉันสามารถหลีกเลี่ยงความสับสน เครือข่ายในบ้านของฉันประกอบด้วยแล็ปท็อปของฉัน (อูบุนตู), เดสก์ท็อปสองเครื่อง (ubuntu / fedora dual boot, fedora / windows dual boot) และระบบสื่อ (Ubuntu) ที่ทำงานฉันมีแล็ปท็อปส่วนตัว (ที่ฉันใช้สำหรับทำงานจากที่บ้าน), เดสก์ท็อปของฉัน (fedora), ระบบการผลิต (RHEL) และแล็ปท็อปที่มี windows (ถอนหายใจ) และ VM (fedora) ดีมากจนถึงตอนนี้ (ฉันไม่มีความสนใจในการวางกุญแจบ้านของฉันลงในระบบงานของฉันหรือแป้นทำงานของฉันในระบบที่บ้านของฉันและเรามีบัญชีผู้ใช้เสมือนเพื่อจัดการการถ่ายโอนไฟล์ด้วยระบบอื่น ๆ เพื่อถ่ายโอนไฟล์ระหว่างระบบอื่น ๆ ) แต่ตอนนี้มา Hadoop ซึ่งเป็นคลัสเตอร์ขนาดใหญ่ของระบบมากกว่า 100+ ระบบและด้วยความซับซ้อนที่เพิ่มขึ้นผู้ใช้มากขึ้นและคู่กุญแจมากขึ้น …
13 ssh  scripting 


4
วิธีทำการแทนที่แบบแทนที่ภายในที่สร้างเฉพาะการสำรองข้อมูลของไฟล์ที่เปลี่ยนแปลงไปแล้ว?
ฉันรันสิ่งต่อไปนี้เพื่อแทนที่คำที่ใช้ในไฟล์ทั้งหมดในไดเรกทอรีการทำงานปัจจุบัน: $ find . -type f -print0 | xargs -0 sed -i'.bup' -e's/Ms. Johnson/Mrs. Melbin/g' สิ่งนี้ดำเนินการแทนที่คำ แต่ยังสร้าง.bupไฟล์ของไฟล์ที่ไม่เคยมีMs. Johnsonสตริง ฉันจะทำการทดแทนโดยไม่สร้างการสำรองข้อมูลที่ไม่จำเป็นเหล่านี้ทั้งหมดได้อย่างไร

3
วิธีสร้าง GUI เก่า ๆ (เช่นตัวติดตั้งเดเบียน / arch)
ฉันได้ทำการติดตั้งจำนวนมากเมื่อเร็ว ๆ นี้และเมื่อเป็นไปได้ฉันมักจะเลือกติดตั้งข้อความจากเมนู GRUB ของ Live CD โปรแกรมติดตั้งส่วนใหญ่มีลักษณะดังนี้: ฉันมักจะคิดว่า GUIs เหล่านี้ (ถ้าคุณสามารถเรียกได้ว่าเป็นอย่างนั้น) ช่างน่ากลัวและเบา หากเห็นว่ามีแอปพลิเคชัน / distros จำนวนมากที่ใช้แอปพลิเคชันนั้นจะต้องเป็นไลบรารีที่ใช้ร่วมกัน มีวิธีที่ฉันสามารถทำสิ่งนี้หรือไม่?
13 scripting  distros  gui 


2
มีวิธีรับ url จากแท็บปัจจุบันใน google-chrome หรือไม่?
ฉันเคยทำเช่นนั้นกับ firefox โดยใช้คำสั่ง python แต่เมื่อเร็ว ๆ นี้มีบางสิ่งเปลี่ยนแปลงและฉันไม่สามารถรับ URL ได้อีก สิ่งที่เคยทำงานกับ firefox: #!/bin/bash current_tab_num () { python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])' } current_tab_url () { sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - …

2
ตรวจสอบการอ้างอิงสคริปต์ bash / shell
มีวิธี / คำสั่งเพื่อตรวจสอบการพึ่งพาของ bash script หรือไม่ กล่าวอีกนัยหนึ่งการตอบคำถามนี้: ผู้ใช้ควรติดตั้งไลบรารีใดเพื่อเรียกใช้สคริปต์ ฉันสามารถทำได้ด้วยตนเองโดยการอ่านสคริปต์และตรวจสอบว่าไลบรารี / คำสั่งอื่น ๆ เรียกใช้ แต่สิ่งนี้ไม่ชัดเจนสำหรับสคริปต์แบบยาว

5
รันคำสั่งเดียวกันอีกครั้งโดยใช้พารามิเตอร์อื่น
ฉันรู้ว่าฉันสามารถเรียกใช้คำสั่งต่อไปนี้ ls Some{File,Folder} และมันก็เทียบเท่ากับการรันสิ่งนี้: ls SomeFile SomeFolder (ฉันยังใช้มันเพื่อสิ่งต่าง ๆ เช่นmv place_{a,b}) อย่างไรก็ตามฉันสงสัยว่ามีทางลัดอื่นที่ฉันสามารถทำสิ่งนี้: run-command --a --whole --lot --of --flags parameter a; \ run-command --a --whole --lot --of --flags parameter b และฉันต้องพิมพ์run-command --a --whole --lot --of --flags parameter {a,b}หรืออะไรที่คล้ายกัน

5
วิธีแยกคำสั่งเชลล์ทั้งหมดที่ใช้การเปลี่ยนเส้นทางโดยสิ้นเชิง
ผมเคยเขียนค่อนข้างเชลล์สคริปต์ไม่กี่ปีที่ผ่านมา ( แต่ฉันไม่แน่นอนดูแลระบบ) และมีบางสิ่งบางอย่างที่ทำให้เกิดปัญหาเสมอฉัน: ฉันจะแยกเปลือกคำสั่งภูมิคุ้มกัน hangups ในพื้นหลังจากที่ทุบตีสคริปต์? เช่นถ้าฉันมีสิ่งนี้: command_which_takes_time input > output ฉันจะ "nohup" และแยกสิ่งนี้ได้อย่างไร ต่อไปนี้ดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการ: nohup command_which_takes_time input > output & ฉันกำลังค้นหาไวยากรณ์อะไรและฉันไม่เข้าใจอะไร
13 bash  scripting  nohup  fork 


3
นับบันทึกรูปแบบการจับคู่ด้วย Awk
ดังนั้นผมจึงบอกว่าจะทำอย่างไรlast > lastloggedinที่จะสร้างไฟล์ที่แสดงให้เห็นว่าการเรียนเข้าสู่ระบบล่าสุดตั้งแต่รีบูตระบบที่ผ่านมาและตอนนี้ฉันขอให้เขียนสคริปต์ Awk ซึ่งเป็นชื่อmyawkที่นับ / กำหนดวิธีการหลายสายของ มีสตริงlastloggedinCFS264 ฉันเคยทำ grep -c CFS264 lastloggedin

2
shell script: ใช้ sudo ข้างในแล้ว vs รันด้วย sudo?
เมื่อเขียนเชลล์สคริปซึ่งบางคำสั่ง แต่ไม่ใช่ทั้งหมดนั้นจำเป็นต้องมีสิทธิ์ผู้ใช้ขั้นสูง เพิ่ม sudo ไปยังคำสั่งที่ต้องการสิทธิ์ผู้ใช้ขั้นสูงและรันเชลล์สคริปต์โดยไม่ต้อง sudo หรือ ไม่ต้องเพิ่ม sudo ไปยังคำสั่งที่ต้องการสิทธิ์ผู้ใช้ระดับสูง แต่รันเชลล์สคริปต์ด้วย sudo ใช่ไหม ในวิธีที่สองฉันจะต้องให้รหัสผ่านของฉันเพียงครั้งเดียว แต่คำสั่งทั้งหมดในสคริปต์จะทำงานด้วยสิทธิพิเศษ superuser รวมถึงคำสั่งที่ไม่ต้องการ ในวิธีแรกฉันอาจต้องให้รหัสผ่านของฉันหลายครั้งสำหรับคำสั่ง sudo ที่แตกต่างกันในขณะที่สิทธิ์ superuser จะได้รับเฉพาะกับคำสั่งที่ต้องการ จากความกังวลด้านความปลอดภัยวิธีแรกดีกว่า เพื่อความสะดวกวิธีที่สองดีกว่า ฉันคิดว่าจะใช้วิธีแรก ดังนั้นฉันต้องจัดการกับความไม่สะดวกในการให้รหัสผ่านกับคำสั่ง sudo หลายคำในเชลล์สคริปต์ Stephen Harris เขียนว่า : สคริปต์ที่เขียนได้ดีจะตรวจพบว่ามันทำงานด้วยสิทธิ์ที่ถูกต้องและไม่เรียก sudo เลย แต่มีสคริปต์ที่ไม่ดีมากมาย ดังนั้นฉันควรใช้วิธีที่สอง? ถ้าเป็นเช่นนั้น ฉันจะเขียน "สคริปต์จะตรวจพบว่ามันทำงานด้วยสิทธิ์ที่ถูกต้องและไม่เรียก sudo เลย"? ฉันจะปรับปรุงความปลอดภัยเพื่อหลีกเลี่ยงปัญหาในการให้สิทธิ์ผู้ใช้ขั้นสูงสำหรับคำสั่งที่ไม่ต้องการเมื่อใช้งานสคริปต์ด้วย sudo ได้อย่างไร วิธีการแบบง่ายนี้มีวิธีที่ดีที่สุดทั้งสองวิธีหรือไม่: เพิ่ม sudo ไปยังคำสั่งที่ต้องการใช้และรันสคริปต์โดยมีหรือไม่มี sudo …

6
เพิ่มบางอย่างลงใน crontab โดยทางโปรแกรม (ผ่าน ssh)
ฉันมีสคริปต์การปรับใช้จะต้องเพิ่มบางสิ่งบางอย่างให้กับผู้ใช้crontab(ทริกเกอร์สคริปต์ที่ล้างบันทึกทุก ๆ XXX วัน) แต่สิ่งนี้จะต้องทำในระหว่างการปรับใช้ครั้งแรกหรือเมื่อจำเป็นต้องได้รับการอัปเดต (ฉันสามารถเรียกใช้xxx.py deploy envหรือxxx.py update env) ดังนั้นฉันต้องทำสิ่งนี้: Check if my cronJob already exist Put my cronJob if it does not already exist or update my cronjob if one of the parameter of the command is different ฉันไม่เห็นวิธีการเพิ่ม / ตรวจสอบ / ลบบางสิ่งออกไปcrontabโดยไม่ต้องใช้crontab -eหรือแก้ไขcrontabไฟล์ (ดาวน์โหลดเขียนใหม่อัปโหลดใหม่อีกครั้ง) PS: นี่คือ cronjob …
13 scripting  cron 

2
การแสดงออกปกติในสคริปต์ทุบตี
นี่เป็นครั้งแรกของฉันที่สคริปต์ทุบตีดังนั้นฉันอาจทำผิดพลาดง่าย โดยทั่วไปฉันพยายามเขียนสคริปต์ที่ได้รับกลุ่มของผู้ใช้และหากพวกเขาอยู่ในกลุ่มที่แน่นอนก็จะเข้าสู่ระบบตามนั้น เห็นได้ชัดว่ามีฟังก์ชั่นเพิ่มเติม แต่ไม่มีจุดที่สร้างเมื่อฉันไม่สามารถใช้ regex ได้! จนถึงตอนนี้ฉันมีสิ่งนี้: #!/bin/bash regex="^([a-zA-Z0-9\-_]+ : [a-zA-Z0-9\-_]+) (usergroup)$" # example output groups="username : username usergroup" echo "$groups" >> /home/jrdn/log if [[ "$groups" =~ $regex ]]; then echo "Match!" >> /home/jrdn/log else echo "No match" >> /home/jrdn/log fi ทุกที่ที่ฉันลอง regex มันใช้งานได้ แต่ในสคริปต์ทุบตีมันเท่านั้นที่เคยออกผลลัพธ์เป็นตามด้วย$groups No matchดังนั้นใครบางคนสามารถบอกฉันว่ามีอะไรผิดปกติกับมัน?

10
สคริปต์ที่ลบช่องว่างพิเศษระหว่างตัวอักษรในข้อความ
ฉันมีเอกสารข้อความที่มีข้อความมากมายซึ่งเพิ่มพื้นที่พิเศษหลังจากตัวอักษรทุกตัว! ตัวอย่าง: T h e b o o k a l s o h a s a n a n a l y t i c a l p u r p o s e w h i c h i s m o r e i m p o …

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