Score:2

วิธีเขียน Device Discovery Tool โดยใช้ Bash

ธง ng

ฉันมีพีซีแบบฝังที่ใช้เซิร์ฟเวอร์ Linux และเว็บเซิร์ฟเวอร์ธรรมดาที่ใช้ในอุตสาหกรรมการเกษตร ลูกค้าของฉันซื้อพีซีเหล่านี้และใช้งานในสาขาของตน (ติดตั้งบนเสาที่สูงจากพื้น 6 หรือ 7 เมตร และเข้าถึงยากมาก) บางครั้งพวกเขาเปลี่ยนช่วงของที่อยู่ IP ของพีซีเหล่านี้จากเดิมเป็นช่วง IP ที่ต้องการ ตัวอย่างเช่น ฉันจัดส่งด้วย 192.168.10.10/24 แต่อาจเปลี่ยนเป็น 172.16.12.19/29 หรือ 10.10.200.10/8 หรือ ....

ปัญหาคือหลังจากนั้นไม่นานพวกเขาก็ลืมที่อยู่ IP ของพีซีและเราต้องการมอบเครื่องมือในการตรวจจับและแสดงที่อยู่ IP ปัจจุบันให้พวกเขา

ฉันคิดว่าการใช้ที่อยู่ IP ของ Broadcast และการส่งข้อความผ่านเครือข่ายท้องถิ่นอาจช่วยแก้ปัญหานี้ได้ แต่หลังจากการค้นหาบางอย่าง ฉันรู้ว่าฉันต้องรู้ช่วงอย่างน้อย เช่น (172.16.12.X หรือ 10.10.200.X) ซึ่งเป็นไปไม่ได้สำหรับฉัน เพราะเกษตรกรลืมช่วงเครือข่ายด้วย มีเครื่องมือเช่น "NC" ใน Linux ที่สามารถช่วยฉันเขียนสคริปต์ทุบตีเพื่อค้นหา IP ได้หรือไม่ ฉันมีสิทธิ์เข้าถึงเครือข่ายไปยังพีซี แต่ฉันไม่สามารถเชื่อมต่อจอภาพกับพีซีได้ ดังนั้นวิธีเดียวคือค้นหา IP โดยใช้เครือข่ายท้องถิ่น

ฉันต้องการสิ่งนี้:

echo "ที่อยู่ IP ของคุณคืออะไร ?" | nc -w1 -u 4545

และฉันใส่บางอย่างในพีซีที่จะตอบข้อความนี้เมื่อใดก็ตามที่พวกเขาได้รับวลีที่ตรงกัน What is your IP Address ? "

nc -l -u -p 4545

แต่สำหรับ nc ฉันต้องระบุช่วงเครือข่ายซึ่งไม่สามารถทำได้สำหรับฉัน

แก้ไข:

หากคุณเคยทำงานกับ Device Discovery tool (DDT) สำหรับกล้อง IP คุณจะรู้ว่าพวกเขาจะค้นหา IP ของกล้องโดยไม่ขึ้นกับพีซีที่มี DDT อยู่ ฉันต้องการบางสิ่งที่เหมือนกับโปรแกรมเหล่านั้น แต่มีคำสั่งทุบตี

CrazyTux avatar
us flag
ชิ้นเหล่านั้นเชื่อมต่อกับอินเทอร์เน็ตหรือไม่ หรือว่าอยู่ใน local lan เดียวกัน? นอกจากนี้ หลังจากลืม ip และช่วง ip แล้ว พวกเขาจะมีเชลล์เข้าถึงเซิร์ฟเวอร์หรือไม่
ng flag
@CrazyTux พวกเขาเชื่อมต่อกับ LAN ในพื้นที่เท่านั้นหลังจากลืม ip พวกเขาไม่สามารถเข้าถึงเชลล์ได้
CrazyTux avatar
us flag
มีเซิร์ฟเวอร์ที่เซิร์ฟเวอร์อื่นหรือ cpstumers เข้าถึงได้หรือไม่ หรือมีบริการ smtp บนเซิร์ฟเวอร์ ฉันคิดว่าฉันอาจมีวิธีแก้ปัญหา มาคุยกัน
ng flag
@CrazyTux ไม่ ลูกค้าเหล่านี้ไม่มีสิทธิ์เข้าถึงซึ่งกันและกัน พีซีเหล่านี้เป็นส่วนตัวสำหรับลูกค้าแต่ละราย และมีการกำหนดค่าของตนเอง น่าเสียดายที่พวกเขาไม่มีเซิร์ฟเวอร์ smtp
CrazyTux avatar
us flag
สมมติว่าเราสร้างเครื่องมือค้นหาอุปกรณ์ หากพวกเขาไม่ได้ใช้และลืม ip ของพวกเขา พวกเขาจะสูญเสียการเข้าถึงพีซีของพวกเขาหรือไม่ หรือพวกเขาสามารถเชื่อมต่อมันด้วยวิธีใด? หากพวกเขาจะสูญเสียการเข้าถึงพีซี เครื่องมือควรส่งข้อความพร้อม ip ปัจจุบันไปยังอุปกรณ์อื่น หากพวกเขายังคงสามารถเข้าถึงเซิร์ฟเวอร์ได้หลังจากที่ลืม ip ของพวกเขา พวกเขาสามารถตรวจสอบได้ด้วย `ifconfig ` ถูกต้องหรือฉันขาดอะไรไป
sudodus avatar
jp flag
เป็นไปได้หรือไม่ที่จะรีเซ็ตอุปกรณ์เหล่านั้นเป็น 'การตั้งค่าจากโรงงาน' ที่คุณบันทึกไว้โดยไม่ต้องปีนเสา ถ้าไม่ฉันคิดว่ามันจะช่วยได้ถ้าคุณสามารถทำให้มันเป็นไปได้
Unix avatar
cn flag
เป็นไปได้ไหมที่จะใช้ bash aliases ผ่าน ssh? ตัวอย่างเช่น: `alias ipa="nc -w1 -u 4545"` ดังนั้นพวกเขาจึงไม่ต้องป้อนวลีที่ตรงทั้งหมด ใส่เพียงนามแฝง `ipa`
sancho.s ReinstateMonicaCellio avatar
พวกเขาใช้ Ubuntu เวอร์ชันใด
sancho.s ReinstateMonicaCellio avatar
เป็นวิธีแก้ปัญหาที่ยอมรับได้หรือไม่ว่า แทนที่จะหาวิธีรู้ IP ใหม่ พวกเขากู้คืน IP เก่า ถ้าเป็นเช่นนั้น คุณสามารถตั้งค่างาน crontab ที่ตรวจสอบ IP ปัจจุบัน และเมื่อใดก็ตามที่มันเบี่ยงเบนไปจากค่าที่ตั้งไว้ ให้เปลี่ยนกลับ
sudodus avatar
jp flag
`@reboot` หรือบางช่วง? เกษตรกรจะยอมรับหรือไม่ที่พวกเขาไม่สามารถเปลี่ยนที่อยู่ IP ได้ด้วยตัวเอง แต่ต้องคงค่าที่ตั้งไว้ล่วงหน้าโดยบริษัทของคุณและบริษัทของคุณจดจำไว้
James S. avatar
de flag
มีการกำหนดที่อยู่ IP ให้กับอุปกรณ์ฝังตัวนี้อย่างไร? คงที่หรือ DHCP? ใครสามารถเข้าถึง LAN ที่อุปกรณ์เหล่านี้เชื่อมต่อด้วย พวกเขาสามารถดูที่ตาราง ARP บนเราเตอร์ grep สำหรับที่อยู่ MAC ของอุปกรณ์ฝังตัวของคุณและ voila ได้หรือไม่
James S. avatar
de flag
netcat (`nc`) เป็นเครื่องมือที่ไม่ถูกต้องที่จะใช้ที่นี่ คุณได้ลอง `nmap` แล้วหรือยัง?
Robert Riedl avatar
us flag
พวกเขาจะได้รับการแจ้งเตือนหรือข้อมูลเซ็นเซอร์ได้อย่างไร หากพวกเขาลืม IP ?
ng flag
@RobertRiedl เซ็นเซอร์ไม่ได้เชื่อมต่อโดยใช้ LAN เชื่อมต่อโดยใช้ RS485 และ CAN Bus พีซีใช้เพื่อตรวจสอบเซ็นเซอร์เท่านั้น
ng flag
@เจมส์ ส. ถึงเจมส์ อย่างที่ฉันบอกไปก่อนหน้านี้ว่าเซ็นเซอร์เชื่อมต่อโดยใช้บัสการสื่อสารแบบอนุกรมกับพีซี พวกมันไม่มีการเชื่อมต่อ LAN ไม่มีการใช้เซิร์ฟเวอร์ DHCP ที่นี่ เกษตรกรเชื่อมต่อพีซีที่เรามีกับแล็ปท็อป/พีซีของตนเองเพื่อตรวจสอบเซ็นเซอร์
ng flag
@เจมส์ ส. วิธีการใช้ nmap ที่นี่ ?
Robert Riedl avatar
us flag
ดังนั้นเพื่อตรวจสอบเซ็นเซอร์ พวกเขาเชื่อมต่อผ่านแล็ปท็อป/พีซีของตนเองไปยังเซิร์ฟเวอร์ Ubuntu นี้.. ผ่าน SSH/เว็บ (?) ไปยังที่อยู่ IP ? หรือมีแอปที่โหลดข้อมูลเซ็นเซอร์บนพีซีของ Farmer ไหม วิธีที่ดีที่สุดในการติดตาม IP คือถ้าเซิร์ฟเวอร์ Ubuntu รายงาน IP ที่ไหนสักแห่งเป็นประจำ
sancho.s ReinstateMonicaCellio avatar
@RobertRiedl - นี่เป็นส่วนหนึ่งของ [คำตอบนี้](https://askubuntu.com/a/1359269/226614)
Robert Riedl avatar
us flag
@ sancho.s ReinstateMonicaCellio คุณหมายถึงส่วน "ออกอากาศ" ของคำตอบของคุณใช่ไหม ก็ใช่ส่วนหนึ่ง สำหรับฉัน มันสร้างความแตกต่างหากผู้ใช้ต้องพิมพ์ IP ลงในเบราว์เซอร์ หรือหากมีชื่อ DNS หรือหากผู้ใช้เปิดแอป ฯลฯ หากพวกเขามีแอป บางทีเราอาจแสดง IP ใน แอป.. หากเป็นชื่อ DNS ก็ควรจะแก้ไขได้ เป็นต้น มิฉะนั้น ดูคำตอบของฉันเกี่ยวกับวิธีออกอากาศด้วย `netcat`
Score:1
ธง cn

ฉันเดาว่าเกษตรกรกำลังกำหนดค่าใหม่เนื่องจากที่อยู่เครือข่ายท้องถิ่นของพวกเขาเปลี่ยนไป ในกรณีนี้ เหตุใดจึงไม่อนุญาตให้เซิร์ฟเวอร์รับที่อยู่ผ่าน DHCP คุณสามารถจดบันทึกที่อยู่ Mac (ซึ่งจะไม่เปลี่ยนแปลง) จากนั้นค้นหาตารางเซิร์ฟเวอร์ DHCP หรือแม้แต่ลองค้นหาบนเซิร์ฟเวอร์ DNS เพื่อค้นหา พีซี การถอดสายออกจากปลายสวิตช์แล้วเสียบกลับเข้าไปใหม่ควรเริ่มต้นเซสชันการกำหนดค่า DHCP เซิร์ฟเวอร์ DHCP ส่วนใหญ่อนุญาตให้คุณกำหนดที่อยู่ตามที่อยู่ Mac เพื่อให้คุณสามารถควบคุมได้ที่ปลายเซิร์ฟเวอร์ dhcp

ng flag
พวกเขาไม่มีเซิร์ฟเวอร์ DHCP พวกเขามีเพียงพีซีเครื่องนี้ที่มีเซ็นเซอร์มากมายเช่น (ก๊าซ อุณหภูมิ และ....)
SEWTGIYWTKHNTDS avatar
cn flag
ในกรณีนั้น ให้สร้างเซิร์ฟเวอร์ของคุณเป็นเซิร์ฟเวอร์ DHCP และแจกที่อยู่ IP ให้กับลูกค้าที่ต้องการเชื่อมต่อ จากนั้นไม่มีปัญหาในการค้นหาที่อยู่ IP
jpbrain avatar
ca flag
สวัสดี @Parsa จากการอ่านดูเหมือนว่าวิธีที่ง่ายที่สุดคือการตั้งค่าเซิร์ฟเวอร์ DHCP/mdns บนเซิร์ฟเวอร์ ด้วยวิธีนี้ คุณจะเชื่อมต่อกับ DHCP บนไคลเอนต์ และคุณจะสามารถสแกนเครือข่ายย่อยหรือเพียงแค่เชื่อมต่อกับเส้นทางเริ่มต้น
Score:1
ธง pe

ถ้าคุณใช้ อาวาฮี บนพีซีแบบฝังตัวของคุณ คุณจะไม่ต้องประดิษฐ์ใหม่/ใช้งานการค้นหาบริการซ้ำ

บนพีซีแบบฝังตัว:s:

apt-get ติดตั้ง avahi-daemon
systemctl เปิดใช้งาน avahi-daemon -- ตอนนี้
ยกเลิกการแสดงความคิดเห็น #publish-workstation=yes ใน /etc/avahi/avahi-daemon.conf
systemctl รีโหลด avahi-daemon

บนเครื่องที่ใช้เพื่อค้นหา PC:s แบบฝังตัว

apt-get ติดตั้ง avahi-utils
avahi-browse -atr # จะส่งออกชื่อและ ip:s ของอุปกรณ์บนเครือข่ายไปยังเทอร์มินัล
Score:1

อย่างที่โพส ปัญหามันดูกว้างเกินไป ตามที่ฉันเข้าใจ คุณมีปัญหาที่แตกต่างกันสองประการ:

  1. สร้างวิธีการเพื่อหลีกเลี่ยงปัญหาในกรณีในอนาคต
  2. เข้าถึงเซิร์ฟเวอร์ที่ ตอนนี้ มีปัญหาให้ดำเนินการแก้ไข 1.

สำหรับปัญหา #1, แทนที่จะหาวิธีทราบ IP ใหม่ คุณสามารถให้เซิร์ฟเวอร์กู้คืน IP เก่าเป็นค่าคงที่ได้ คุณสามารถตั้งค่างาน crontab ที่ตรวจสอบ IP ปัจจุบัน และเมื่อใดก็ตามที่มันเบี่ยงเบนไปจากค่าที่ตั้งไว้ มันจะเปลี่ยน IP กลับเป็นเป้าหมาย แน่นอนว่าคุณจะมีช่วงเวลา "เครือข่ายตาบอด" ขึ้นอยู่กับความถี่ที่ตั้งค่าใน crontab

อีกทางหนึ่ง งาน crontab สามารถออกอากาศ/ส่งอีเมล/อื่นๆ ไอพีใหม่ กลไกที่เหมาะสมขึ้นอยู่กับสิ่งที่คุณเต็มใจดำเนินการ วิธีที่คุณเข้าถึงเซิร์ฟเวอร์

ทั้งหมดนี้ดูเหมือนจะเป็นวิธีแก้ปัญหา. หากกำหนดค่าถูกต้อง ไม่ควร "ลืมที่อยู่ IP ของพีซี" นี่คือจุดที่ต้องแก้ไขฉันเดา หากคุณสามารถให้ข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าปัจจุบันได้ นั่นจะทำให้ปัญหาแคบลง

สำหรับปัญหา #2, หากนั่นคือเป้าหมายของคุณ โปรดพูดถึงมัน ฉันมีปัญหา "ที่คล้ายกัน" เซิร์ฟเวอร์ที่ฉันเข้าถึงจากระยะไกลเปลี่ยน IP นานๆ ครั้ง เนื่องจากถูกกำหนดโดย DHCP เมื่อใดก็ตามที่ฉันมีปัญหา จุ๊ๆไปที่เซิร์ฟเวอร์ ฉันรันสคริปต์ขนาดเล็กที่ผสมผสานระหว่าง ปิง และ จุ๊ๆ (ภายในลูปของ IP) และตรวจสอบการตอบสนอง จะได้ IP ปัจจุบัน สิ่งนี้อาจใช้ได้กับคุณหรือไม่ขึ้นอยู่กับหลาย ๆ ด้านของการกำหนดค่าเครือข่ายของคุณ

Score:1
ธง us

กับ เน็ตแคท คุณสามารถทำบางอย่างเช่น cronjob บน "เซิร์ฟเวอร์ที่ติดตั้งเสา" ซึ่งทำสิ่งนี้ทุก ๆ X นาที:

#!/bin/bash

# แทนที่ eth0 ด้วยชื่ออินเทอร์เฟซของคุณหรือรับ IP ด้วยวิธีอื่น

ip="$(ifconfig | grep -A 1 'eth0' | tail -1 | cut -d ' ' -f 10)"
datum=$(วันที่)
echo "นี่คือ IP ของฉัน: "$ip | netcat -q 2 -b -u 255.255.255.255 12001

ผู้ใช้/เกษตรกรจึงต้องฟังดังนี้:

เสียงสะท้อน | nc -ulp 12001

และหลังจาก X นาที พวกเขาควรได้รับสิ่งนี้:

นี่คือ IP ของฉัน: 192.168.1.121

ใช้งานได้เฉพาะเมื่อ "Farmers PC" และ "pole-mounted servers" ของคุณอยู่ใน subnet เดียวกัน


คำอธิบาย:

สคริปต์จะส่งออกอากาศ UDP บนพอร์ต 12001 และออก เอ็นซีหลังจากน้ำหนักบรรทุก (ของเรา เสียงสะท้อน คำสั่ง) + 2 วินาที IP ไม่จำเป็นต้องได้รับผ่าน ifconfig ชัดเจน แต่มันค่อนข้างง่ายที่จะแยก ..

การส่งไปยัง 255.255.255.255 หมายถึงการออกอากาศไปยังเครือข่ายย่อยทั้งหมด โดยไม่คำนึงถึงขนาด

เราจึงไม่ต้องรู้ว่าเราอยู่ในเครือข่ายใด

ฝั่งลูกค้าเรารับฟังด้วย เอ็นซี จนกว่าเราจะได้น้ำหนักบรรทุก ฉันพบ เอ็นซี ยุติอย่างสมบูรณ์ร่วมกับตัวแบ่งบรรทัด (ผ่าน เสียงสะท้อน).

โพสต์คำตอบ

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