Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

3
วิธีการจับภาพที่อยู่ IP แรกจากคำสั่ง ifconfig?
วิธีการจับที่อยู่ IP แรกที่มาจากifconfigคำสั่ง? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX …
9 linux  bash  awk  sed  ifconfig 

3
วิธีการตั้งค่า ssh เพื่อลองพอร์ตไม่เพียง 22 แต่พอร์ตรองทุกครั้ง?
เป็นส่วนหนึ่งของความพยายามของฉันเพื่อลดเสียงรบกวนในบันทึกและลดการค้นพบเล็กน้อย (และด้านบนของ fail2ban, อนุญาตเฉพาะการรับรองความถูกต้องของรหัสสาธารณะเป็นต้น) ฉันเปลี่ยน sshd-ports เป็นประจำบนเซิร์ฟเวอร์ที่ฉันตั้งค่าเป็นพอร์ตอื่น ฉันอาจผนวก -p 5492 คำสั่ง SSH ssh_configของฉันหรือเพิ่มพอร์ตสำหรับแต่ละเซิร์ฟเวอร์ที่เฉพาะเจาะจงลงไปของฉัน มีวิธีการกำหนดค่า ssh เพื่อลองเชื่อมต่อกับทั้งพอร์ต 22 และพอร์ต 5492 หรือไม่หากพอร์ต 22 ใช้งานไม่ได้

3
การขยายตัวเชลล์ (A | B) ในชื่อไฟล์?
เป็นไปได้หรือไม่ที่จะขยายorทางเลือกในเชลล์เมื่ออ่านไฟล์ตัวอย่าง สิ่งที่ฉันหมายถึงคือการgrepสนับสนุนไวยากรณ์ที่ต้องการ(A|B)จับคู่ A หรือ B ในไฟล์ ในทำนองเดียวกันถ้าฉันมีไฟล์เหล่านี้: file1.txt file2.txt file3.txt file4.txt file5.txt ฉันทำได้cat file{1..5}.txtในbashขณะที่มันขยายช่วง มีวิธีที่เท่าเทียมกันในการทำเช่นนี้เพียงไม่กี่ไฟล์? เช่นcat file(1|5).txtและพิมพ์ 2 เหล่านั้นเท่านั้น

2
การปรับเปลี่ยนบรรทัดคำสั่ง XML (สคริปต์เชลล์)
วิธีจัดการ XML จากบรรทัดคำสั่งในเชลล์สคริปต์ มีคำสั่งมากมายสำหรับการจัดการข้อมูลแบบตาราง, ตัวแปรสภาพแวดล้อมการแทนที่หรือแทนที่ส่วนข้อความด้วย regex แต่ฉันไม่พบอะไรเลยสำหรับ XML บิลด์สคริปต์ของฉันจำเป็นต้องแทรกแท็กที่มีเนื้อหาภายในแท็กหลักของเอกสาร xml และฉันพบว่ามันเป็น overkill ในการติดตั้ง java, perl หรือ python ในระบบปฏิบัติการสำหรับจุดประสงค์นั้น (สคริปต์ของฉันทำใน gitlab ด้วยอิมเมจ docker งานของฉันด้วยเครื่องมือที่มีใน maven: ภาพ 3.5-jdk-8 จะเป็นความฝัน) ฉันไม่ต้องการที่จะจัดการกับ XML ที่มี sed แม้ว่าในการสร้างสคริปต์ของฉันมันจะทำงานเพราะมันเป็นความชั่วร้าย ตัวอย่าง: ฉันมี xml ต่อไปนี้: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- a lot of other …

1
Wake-on-LAN ผ่าน SSH
ฉันใช้ Wake-on-LAN มาหลายปีแล้วสำหรับอุปกรณ์ Linux ของฉัน มันทำงานได้ดีพอ อย่างไรก็ตามฉันยังมี Mac Mini ที่บ้าน ฉันสังเกตว่ามันเข้าสู่โหมดสลีปและมีคุณสมบัติที่แตกต่างกันสองอย่างแยกต่างหากจากเครื่อง Linux ที่ฉันมีในขณะนอนหลับ: มันยังคงตอบสนองต่อการ ping บนเครือข่าย มันจะตื่นขึ้นโดยอัตโนมัติเมื่อsshเชื่อมต่อเข้ามาไม่จำเป็นต้องใช้ Wake-on-LAN คุณสมบัติที่ 2 นี้จบลงด้วยการเป็นคนดีจริง ๆ : มันเข้าสู่โหมดสลีปโดยอัตโนมัติและประหยัดพลังงานเมื่อไม่ได้ใช้งานและไม่ต้องใช้ความคิดเพิ่มเติมในการเปิดเครื่องเมื่อฉันต้องการที่จะใช้มัน มันแค่ตื่นขึ้นมาโดยอัตโนมัติ และหลังจากฉันออกจากระบบ 15 นาทีหลังจากนั้นมันจะเข้าสู่โหมดสลีอีกครั้ง ข้อสันนิษฐานของฉันเป็นเพราะ Apple ควบคุมฮาร์ดแวร์และซอฟต์แวร์สแต็ค ดังนั้นในขณะที่ Wake-on-LAN ทั่วทั้งอุตสาหกรรมเป็นคุณสมบัติของอุปกรณ์เครือข่ายที่ใช้แพ็คเก็ตเวทย์มนตร์ (ที่ไม่ต้องมีการทำงานร่วมกับระบบปฏิบัติการ), Mac ของเวทมนต์ "Wake-on-LAN และยังตอบสนองต่อการปิง" ให้ทั้ง OS เข้าสู่โหมดสลีปและ / หรือให้สแต็กเครือข่ายแยกยังคงทำงานในโหมดสลีป แต่นั่นเป็นเพียงการเดา ฉันอยากรู้ว่าใครเคยเห็นหรือใช้งาน "Wake-on-ขาเข้า - SSH" บนเครื่อง …

1
.inputrc vs .bashrc การตั้งค่า
ฉันสังเกตเห็นการตั้งค่าบางอย่างใน.bashrcและ.inputrcไฟล์มีลักษณะเหมือนหรือคล้ายกันเช่น: shopt -s nocaseglobVS set completion-ignore-case export HISTSIZEVS set history-size export HISTFILESIZEVSset history-size อย่า.inputrcตั้งค่ายังส่งผลกระทบต่อการเสร็จสิ้นและขนาดประวัติศาสตร์ในเปลือกหลาม (ถ้าวิ่งภายในอาคารผู้โดยสาร)? ถูกHISTSIZEจำกัด ด้วยhistory-sizeหรือไม่ก็แทนที่มันได้หรือไม่
9 bashrc  inputrc 

2
Chrome กิน RAM ทั้งหมดและหยุดการทำงานของระบบ
วิธีป้องกันโครเมี่ยมให้รับมากกว่า RAM ขนาด 4GB ในบางครั้งเขาตัดสินใจที่จะทำสิ่งต่าง ๆ เช่น 7GB (รวม 8GB RAM ทั้งหมด) และทำให้คอมพิวเตอร์ของฉันใช้งานไม่ได้ คุณมีความช่วยเหลือไหม PS: ฉันยังไม่ได้เปิดมากกว่า 10 แท็บ แก้ไข: บางทีฉันอาจทำ ... สิ่งที่ชอบ 15. อย่างไรก็ตามฉันต้องการให้ Chrome หยุดหรือปิดเพื่อไม่ให้หยุดทั้งระบบ

1
ใครเป็นผู้เริ่มต้น ssh-agent ของฉันและทำไมมันถึงไม่จบอย่างถูกต้อง?
นี่เป็นปัญหาที่ฉันมีมาเป็นเวลานาน แต่ทุกครั้งที่ฉันพยายามคิดอะไรบางอย่างที่ฉันหลงทางดังนั้นฉันจึงคิดว่าฉันควรถามที่นี่ว่าอาจมีใครบางคนที่มีประสบการณ์มากกว่าสามารถช่วยฉันได้ พื้นหลัง Raspberry Pi ของฉันใช้ Raspbian Jessie และฉันใช้ SSH บ่อยครั้งเพื่อเข้าสู่ระบบและรันคำสั่งจากระยะไกล ในระหว่างช่วง SSH ครั้งแรกของฉันฉันสังเกตเห็นว่าssh-agentกระบวนการเกิดขึ้นที่ RPiทุกครั้งที่ฉันเข้าสู่ระบบ แต่ไม่เคยถูกฆ่าตายเมื่อexitเข้า: เข้าสู่ระบบออกหลายครั้งทำให้ssh-agentกระบวนการหลายอย่างเกิดขึ้นโดยไม่ต้องทำอะไรเลย เล่นไปรอบ ๆ และอ่านหน้าคนและคำตอบที่นี่และที่นั่นฉันเพิ่งเข้าใจวัตถุประสงค์ของการssh-agentและฉันก็รู้ว่ามันควรจะถูกฆ่าตามปกติเมื่อออกจากระบบดังนั้นฉันเริ่มถามตัวเองว่าทำไมมันไม่ นอกจากนี้ฉันสังเกตเห็นว่าการออกตัวsource ~/.bashrcทำให้เกิดอีกตัวอย่างของssh-agentการเกิด ฉันอ่านหน้าญาติSSH_AGENT_PIDควรกำหนดตัวแปรสภาพแวดล้อมเนื่องจากssh-agentโปรแกรมควรเริ่มทำงานภายในevalเพื่อประมวลผลเอาต์พุตและกำหนดตัวแปรดังกล่าวซึ่งจะถูกใช้โดยคำสั่งที่เกี่ยวข้องกับ SSH อื่น ๆ รวมถึงssh-agent -k(เพื่อฆ่าเอเจนต์ที่สัมพันธ์กับเซสชันปัจจุบัน) ดังนั้นฉัน วิ่งecho $SSH_AGENT_PIDและecho $SSH_AUTH_SOCKแต่ทั้งคู่ก็ว่างเปล่า ฉันรู้ทันที: อาจเป็นไปได้ว่ากระบวนการไม่ได้หยุดทำงานเมื่อออกจากระบบเนื่องจากssh-agent -kพยายามอ่าน PID จากตัวแปรสภาพแวดล้อมที่ไม่ได้ตั้งค่า ปัญหา เนื่องจากssh-agentไม่ได้ถูกฆ่าตายในการออกจากระบบและนี้เพื่อตรวจสอบว่าเกิดขึ้นเพราะตัวแปรสภาพแวดล้อมที่จำเป็นไม่ได้ตั้งค่าก็สามารถสิ่งหนึ่งเท่านั้นเฉลี่ย: ใครก็ตามที่เรียกร้องssh-agentในการเข้าสู่ระบบอาจจะไม่ได้ทำมันในทางที่เหมาะสม (ซึ่งจะเป็นeval "$(ssh-agent -s)" ) ดังนั้นฉันคิดว่า: ดีปัญหาคืออะไร? ฉันจะค้นหาไฟล์การกำหนดค่าบริการหรือสคริปต์การเข้าสู่ระบบใด ๆ ที่ได้รับการดำเนินการเพื่อเริ่มตัวแทนและแก้ไขด้วยตนเอง! มันจะอยู่ที่ไหนในโลก? …

1
แสดง STDOUT ก่อน STDERR หรือไม่
ฉันใหม่เพื่อทุบตีและฉันไม่สามารถให้ชีวิตของฉันคิดออกวิธีการเรียกใช้คำสั่งบางอย่างสมมติ./fffและพิมพ์ stdouts ปกติก่อน stderr (ฉันสับสนเกี่ยวกับความหมายของตัวเอง) ตัวอย่างเช่น $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill ต้องการพิมพ์เช่น: I am a …

4
แยกสตริงบนโคลอนใน / bin / sh
dashสคริปต์ของฉันใช้พารามิเตอร์ในรูปแบบของhostname:portคือ: myhost:1234 ในขณะที่พอร์ตเป็นทางเลือกเช่น: myhost ฉันต้องอ่านโฮสต์และพอร์ตเป็นตัวแปรแยกต่างหาก ในกรณีแรกฉันทำได้: HOST=${1%%:*} PORT=${1##*:} แต่นั่นจะไม่ทำงานในกรณีที่สองเมื่อพอร์ตถูกละเว้น echo ${1##*:}เพียงแค่ส่งคืนชื่อโฮสต์แทนที่จะเป็นสตริงว่าง ใน Bash ฉันสามารถทำได้: IFS=: read A B <<< asdf:111 dashแต่นั่นไม่ได้ทำงานใน ฉันสามารถแยกสตริงบน:ในประโดยไม่ต้องเรียกใช้โปรแกรมภายนอก ( awk, trฯลฯ )?
9 shell  string  dash 

3
การป้องกันคำสั่งเชลล์ด้วยตัวแปรสตริง
ภายในภาษาการเขียนโปรแกรมฉันรันคำสั่งเชลล์แบบง่าย ๆ cd var; echo > create_a_file_here ด้วยvarเป็นตัวแปรที่มีสตริง (หวังว่า) ไดเร็กทอรีไปยังตำแหน่งที่ฉันต้องการสร้างไฟล์ "create_a_file_here" ตอนนี้ถ้ามีคนเห็นบรรทัดของรหัสนี้มันเป็นไปได้ที่จะใช้ประโยชน์จากมันโดยการกำหนดเช่น: var = "; rm -rf /" สิ่งต่าง ๆ อาจดูน่าเกลียด วิธีหนึ่งในการหลีกเลี่ยงกรณีข้างต้นอาจเป็นการค้นหาสตริงในvarสำหรับอักขระพิเศษบางตัวเช่น ';' ก่อนดำเนินการคำสั่งเชลล์ แต่ฉันสงสัยว่าสิ่งนี้ครอบคลุมการหาประโยชน์ที่อาจเกิดขึ้นทั้งหมด ไม่มีใครรู้วิธีที่ดีในการตรวจสอบว่า "cd var" เปลี่ยนเฉพาะไดเรกทอรีและไม่มีอะไรอีกหรือไม่

1
ฉันจะทำความสะอาดบัฟเฟอร์การคัดลอก / วางได้อย่างไร
ฉันสังเกตเห็นว่าเมื่อฉันเลือกข้อความคัดลอกแล้วลองและวางลงในตัวอย่างเช่น gmail มันเก็บการจัดรูปแบบ ไม่นานมานี้ในช่วง 10 ปีที่ผ่านมานี่เป็นคุณสมบัติที่น่าพึงพอใจสำหรับฉัน ขณะนี้ฉันใช้ glipper เป็นผู้จัดการคลิปบอร์ดของฉัน ดูเหมือนว่าหากฉันเลือกรายการคัดลอก / วางของฉัน (ใน glipper) จะทำให้ได้รับการทำให้สะอาด ฉันจะทำให้มันสะอาดโดยอัตโนมัติทุกครั้งที่ฉันคัดลอก / วางได้อย่างไร ความคิดของฉันอาจจะต้องเขียนปลั๊กอินสำหรับ glipper แต่ต้องมีการตั้งค่าบางอย่างหรือขอที่ทำให้ฉัน sanitize ใช้ x.org เพียง ความคิดใด ๆ ขอบคุณ!
9 xorg  clipboard 

10
Bash: แยกหนึ่งในสี่ส่วนของที่อยู่ IPv4
เราสามารถใช้ไวยากรณ์${var##pattern}และ${var%%pattern}แยกส่วนสุดท้ายและส่วนแรกของที่อยู่ IPv4: IP=109.96.77.15 echo IP: $IP echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*} echo 'Extract the last section using ${var##pattern}: ' ${IP##*.} เราจะแยกส่วนที่สองหรือสามของที่อยู่ IPv4 โดยใช้การขยายพารามิเตอร์ได้อย่างไร นี่คือโซลูชันของฉัน: ฉันใช้อาร์เรย์และเปลี่ยนตัวแปร IFS :~/bin$ IP=109.96.77.15 :~/bin$ IFS=. read -a ArrIP<<<"$IP" :~/bin$ echo ${ArrIP[1]} 96 :~/bin$ printf "%s\n" "${ArrIP[@]}" 109 96 77 15 นอกจากนี้ผมได้เขียนแก้ปัญหาบางอย่างใช้awk, …

7
ตรงข้ามกับคำสั่ง `source '
ฉันใช้sourceคำสั่งในสคริปต์ทุบตีของฉันเพื่ออ่าน / พิมพ์ค่าตัวแปร more linuxmachines_mount_point.txt export linuxmachine01="sdb sdc sdf sdd sde sdg" export linuxmachine02="sde sdd sdb sdf sdc" export linuxmachine03="sdb sdd sdc sde sdf" export linuxmachine06="sdb sde sdf sdd" source linuxmachines_mount_point.txt echo $linuxmachine01 sdb sdc sdf sdd sde sdg อะไรคือสิ่งที่ตรงกันข้ามsourceเพื่อยกเลิกการตั้งค่าตัวแปร? ผลลัพธ์ที่คาดหวัง echo $linuxmachine01 < no output >

2
จะทำให้การอ่านและเขียนไฟล์เดียวกันในไปป์ไลน์เดียวกันเสมอ“ ล้มเหลว” ได้อย่างไร?
ว่าฉันมีสคริปต์ต่อไปนี้: #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done ในบรรทัดสำคัญฉันอ่านและเขียนไฟล์เดียวกันtmpซึ่งบางครั้งล้มเหลว (ฉันอ่านมันเป็นเพราะสภาพการแข่งขันเพราะกระบวนการในไปป์ไลน์ถูกดำเนินการแบบขนานซึ่งฉันไม่เข้าใจว่าทำไม - แต่ละคนheadจำเป็นต้องใช้ข้อมูลจากข้อมูลก่อนหน้านี้ใช่ไหมนี่ไม่ใช่คำถามหลักของฉัน แต่คุณสามารถตอบได้เช่นกัน) เมื่อฉันเรียกใช้สคริปต์มันจะส่งออกประมาณ 200 บรรทัด มีวิธีใดบ้างที่ฉันสามารถบังคับให้สคริปต์นี้ให้ผลลัพธ์เสมอ 0 บรรทัด (ดังนั้นการเปลี่ยนเส้นทาง I / O ไปยังจะtmpถูกเตรียมไว้ก่อนเสมอและข้อมูลจะถูกทำลายเสมอ) เพื่อความชัดเจนฉันหมายถึงการเปลี่ยนการตั้งค่าระบบไม่ใช่สคริปต์นี้ ขอบคุณสำหรับความคิดของคุณ

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