Điểm:2

Cách viết Công cụ khám phá thiết bị bằng Bash

lá cờ ng

Tôi có một PC nhúng chạy máy chủ Linux và một máy chủ web đơn giản được sử dụng trong ngành nông nghiệp, khách hàng của tôi mua những PC này và sử dụng chúng trong lĩnh vực của họ. (họ lắp đặt nó trên cột cách mặt đất 6 hoặc 7 mét và rất khó tiếp cận) đôi khi họ thay đổi dải địa chỉ IP của những PC này từ địa chỉ ban đầu thành Dải IP mong muốn của riêng họ. ví dụ: tôi gửi cho họ 192.168.10.10/24 nhưng họ có thể thay đổi nó thành thứ gì đó như 172.16.12.19/29 hoặc 10.10.200.10/8 hoặc ....

vấn đề là sau một thời gian, họ quên Địa chỉ IP của PC và chúng tôi muốn cung cấp cho họ một công cụ để phát hiện và hiển thị cho họ Địa chỉ IP hiện tại.

Tôi nghĩ có thể sử dụng địa chỉ IP Broadcast và gửi tin nhắn qua mạng cục bộ có thể giúp giải quyết vấn đề này. nhưng sau một số tìm kiếm, tôi nhận ra rằng tôi phải biết ít nhất phạm vi, chẳng hạn như (172.16.12.X hoặc 10.10.200.X), điều này là không thể đối với tôi vì nông dân cũng quên phạm vi mạng. Có công cụ nào như "NC" trong Linux có thể giúp tôi viết tập lệnh bash để tìm IP của họ không? Tôi có quyền truy cập mạng vào PC nhưng tôi không thể kết nối Màn hình với PC nên cách duy nhất là tìm IP bằng mạng cục bộ.

Tôi muốn một cái gì đó như thế này:

echo "Địa chỉ IP của bạn là gì?" | nc -w1 -u 4545

và tôi đặt một cái gì đó trên PC để trả lời tin nhắn này bất cứ khi nào họ nhận được cụm từ chính xác Địa chỉ IP của bạn là gì? "

nc -l -u -p 4545

nhưng đối với nc, tôi phải chỉ định phạm vi mạng mà tôi không thể thực hiện được.

Chỉnh sửa:

nếu bạn đã làm việc với công cụ Khám phá thiết bị (DDT) cho Camera IP, bạn biết rằng họ sẽ tìm thấy IP camera độc lập với PC có DDT trên đó. Tôi muốn một cái gì đó giống hệt như chương trình đó nhưng với các lệnh bash.

CrazyTux avatar
lá cờ us
Những chiếc đó có được kết nối với internet không? Hoặc tất cả họ đang ở trong cùng một lan địa phương? Hơn nữa, sau khi quên ip và dải ip, họ có quyền truy cập shell vào máy chủ không?
lá cờ ng
@CrazyTux họ chỉ được kết nối với lan cục bộ, sau khi quên ip, họ không có quyền truy cập vào trình bao
CrazyTux avatar
lá cờ us
Có máy chủ nào mà tất cả các máy chủ hoặc cpstumer khác có quyền truy cập không? Hoặc có một dịch vụ smtp trên các máy chủ?, Tôi nghĩ rằng tôi có thể có giải pháp, hãy trò chuyện.
lá cờ ng
@CrazyTux không Những khách hàng này không có quyền truy cập lẫn nhau, những PC này là riêng tư của từng khách hàng và họ có cấu hình riêng. tiếc là họ không có máy chủ smtp,
CrazyTux avatar
lá cờ us
Vì vậy, giả sử rằng chúng tôi tạo một công cụ Khám phá thiết bị, nếu họ không sử dụng nó và họ sẽ quên ip của mình, họ có mất quyền truy cập vào máy tính của mình không? hoặc họ có thể kết nối nó bằng cách nào đó? nếu họ mất quyền truy cập vào máy tính, bằng cách nào đó, công cụ sẽ gửi một tin nhắn có ip hiện tại đến một số thiết bị khác, nếu họ vẫn có quyền truy cập vào máy chủ sau khi quên ip, thì họ có thể kiểm tra bằng `ifconfig `là nó đúng hay tôi đang thiếu một cái gì đó?
sudodus avatar
lá cờ jp
Có thể đặt lại các thiết bị đó về 'cài đặt gốc' mà bạn có trong hồ sơ của mình mà không cần leo lên cột không? Nếu không, tôi nghĩ sẽ hữu ích nếu bạn quản lý để biến điều đó thành có thể.
Unix avatar
lá cờ cn
Có thể sử dụng bí danh bash qua ssh không? Ví dụ: `alias ipa="nc -w1 -u 4545"` nên họ không cần phải nhập cụm từ chính xác mà chỉ cần nhập bí danh `ipa`.
sancho.s ReinstateMonicaCellio avatar
lá cờ pl
Họ đang chạy phiên bản Ubuntu nào?
sancho.s ReinstateMonicaCellio avatar
lá cờ pl
Có phải là một giải pháp có thể chấp nhận được, thay vì tìm cách biết IP mới, họ khôi phục IP cũ? Nếu vậy, bạn có thể đặt tác vụ crontab để kiểm tra IP hiện tại và bất cứ khi nào nó sai lệch so với giá trị đã đặt, hãy thay đổi lại.
sudodus avatar
lá cờ jp
`@reboot` hay ở một khoảng thời gian nào đó? Liệu người nông dân có chấp nhận, rằng họ không thể tự thay đổi địa chỉ IP mà phải giữ nguyên giá trị đặt trước do công ty bạn đặt ra và được công ty bạn ghi nhớ?
James S. avatar
lá cờ de
Địa chỉ IP được gán cho thiết bị nhúng này như thế nào? Tĩnh hay DHCP? Ai có quyền truy cập vào mạng LAN mà các thiết bị này kết nối? họ có thể chỉ nhìn vào bảng ARP trên bộ định tuyến, grep để biết địa chỉ MAC của thiết bị nhúng của bạn và thì đấy không?
James S. avatar
lá cờ de
netcat (`nc`) là công cụ sai để sử dụng ở đây. Bạn đã thử `nmap` chưa?
Robert Riedl avatar
lá cờ us
làm thế nào để họ nhận được cảnh báo hoặc dữ liệu cảm biến, nếu họ quên IP?
lá cờ ng
@RobertRiedl Các cảm biến không được kết nối bằng mạng LAN, chúng được kết nối bằng RS485 và CAN Bus, PC chỉ được sử dụng để giám sát các cảm biến
lá cờ ng
@JamesS. James thân mến, như tôi đã nói trước đó, các cảm biến được kết nối bằng bus giao tiếp nối tiếp với PC, chúng không có bất kỳ kết nối mạng LAN nào. Không có máy chủ DHCP nào được sử dụng ở đây. nông dân kết nối PC chúng tôi có với LAPTOP/PC của riêng họ để theo dõi các cảm biến.
lá cờ ng
@JamesS. làm thế nào để sử dụng nmap ở đây?
Robert Riedl avatar
lá cờ us
Vì vậy, để kiểm tra các cảm biến, họ kết nối qua Máy tính xách tay/PC của chính họ với Máy chủ Ubuntu này.. qua SSH/Web (?) đến địa chỉ IP? Hoặc có ứng dụng nào tải dữ liệu cảm biến trên PC của Nông dân không? Cách tốt nhất để theo dõi IP là, nếu Máy chủ Ubuntu thường xuyên báo cáo IP ở đâu đó.
sancho.s ReinstateMonicaCellio avatar
lá cờ pl
@RobertRiedl - Đây là một phần của [câu trả lời này](https://askubuntu.com/a/1359269/226614).
Robert Riedl avatar
lá cờ us
@ sancho.sReinstateMonicaCellio ý bạn là phần "phát sóng" trong câu trả lời của bạn? Vâng, vâng, một phần. Đối với tôi, sẽ có sự khác biệt nếu Người dùng phải nhập IP vào trình duyệt hoặc nếu có tên DNS hoặc nếu họ kích hoạt một ứng dụng, v.v. Nếu họ có một ứng dụng, thì có lẽ bằng cách nào đó chúng ta có thể hiển thị IP trong ứng dụng.. nếu đó là tên DNS, thì tên này sẽ có thể phân giải được, v.v.. nếu không, hãy xem câu trả lời của tôi về cách phát với `netcat`
Điểm:1
lá cờ cn

Tôi đoán những người nông dân đang cấu hình lại nó vì địa chỉ mạng cục bộ của họ thay đổi. Trong trường hợp đó, tại sao không cho phép máy chủ lấy địa chỉ của nó qua DHCP, bạn có thể ghi lại địa chỉ Mac (địa chỉ này sẽ không thay đổi) và sau đó tìm kiếm các bảng máy chủ DHCP hoặc thậm chí thử tra cứu trên máy chủ DNS để tìm máy tính. Rút cáp khỏi đầu cuối của bộ chuyển mạch và cắm lại sẽ bắt đầu phiên cấu hình DHCP. Hầu hết các máy chủ DHCP cho phép bạn gán địa chỉ dựa trên địa chỉ Mac để bạn có một số quyền kiểm soát đối với địa chỉ đó ở cuối máy chủ dhcp.

lá cờ ng
họ không có bất kỳ máy chủ DHCP nào, họ chỉ có chiếc PC này với rất nhiều cảm biến như (khí, nhiệt độ và ....)
SEWTGIYWTKHNTDS avatar
lá cờ cn
Trong trường hợp đó, hãy biến Máy chủ của bạn thành máy chủ DHCP và phân phát địa chỉ IP cho các máy khách muốn kết nối. Sau đó, không có vấn đề gì khi tìm địa chỉ IP.
jpbrain avatar
lá cờ ca
Xin chào @Parsa, Từ việc đọc phần này, có vẻ như cách dễ nhất là thiết lập máy chủ DHCP/mdns trên máy chủ. Bằng cách đó, bạn kết nối với nó bằng DHCP trên máy khách và bạn sẽ có thể quét mạng con hoặc chỉ kết nối với tuyến đường mặc định.
Điểm:1
lá cờ pl

Như đã đăng, vấn đề có vẻ quá rộng. Theo tôi hiểu, bạn có hai vấn đề khác nhau:

  1. Tạo một phương pháp để tránh vấn đề trong các trường hợp trong tương lai.
  2. Truy cập vào các máy chủ mà hiện nay có vấn đề, để thực hiện giải pháp 1.

Đối với vấn đề #1, thay vì tìm cách biết IP mới, bạn có thể yêu cầu máy chủ khôi phục IP cũ về một giá trị cố định. Bạn có thể đặt một tác vụ crontab để kiểm tra IP hiện tại và bất cứ khi nào nó sai lệch khỏi giá trị đã đặt, nó sẽ thay đổi IP trở lại mục tiêu. Tất nhiên, bạn sẽ có các cửa sổ thời gian "mù mạng", tùy thuộc vào tần suất được đặt trong crontab.

Ngoài ra, một tác vụ crontab có thể phát/gửi email/v.v. IP mới. Các cơ chế phù hợp phụ thuộc rất nhiều vào những gì bạn sẵn sàng vận hành, cách bạn truy cập vào các máy chủ.

Tất cả điều này có vẻ là một cách giải quyết. Nếu được cấu hình đúng, họ sẽ không "quên địa chỉ IP của PC". Đây là điểm cần khắc phục, tôi đoán vậy. Nếu bạn có thể cung cấp thêm thông tin về cấu hình hiện tại, điều đó sẽ thu hẹp vấn đề.

Đối với vấn đề #2, nếu đó là mục tiêu của bạn xin vui lòng đề cập đến nó. Tôi có một vấn đề "tương tự". Một máy chủ mà tôi đang truy cập từ xa thỉnh thoảng thay đổi IP vì nó được gán bởi DHCP. Bất cứ khi nào tôi gặp vấn đề sshđến máy chủ, tôi thực thi một tập lệnh nhỏ, bằng sự kết hợp của pingssh (trong một vòng lặp IP) và kiểm tra phản hồi, có thể nhận được IP hiện tại. Tùy thuộc vào nhiều khía cạnh của cấu hình mạng của bạn, điều này có thể phù hợp với bạn hay không.

Điểm:1
lá cờ us

Với mạng lưới bạn có thể làm điều gì đó giống như một cronjob trên "các máy chủ gắn trên cột" của mình, hoạt động như thế này sau mỗi X phút:

#!/bin/bash

# thay thế eth0 bằng tên giao diện của bạn hoặc lấy IP qua các phương tiện khác

ip="$(ifconfig | grep -A 1 'eth0' | tail -1 | cut -d ' ' -f 10)"
mốc thời gian=$(ngày)
echo "Đây là IP của tôi: "$ip | netcat -q 2 -b -u 255.255.255.255 12001

Người dùng/Nông dân sau đó chỉ phải nghe như thế này:

tiếng vang | nc-ulp 12001

Và sau X phút, họ sẽ nhận được một cái gì đó như thế này:

Đây là IP của tôi: 192.168.1.121

Tuy nhiên, điều này chỉ hoạt động nếu "Farmers PC" và "máy chủ gắn trên cột" của bạn nằm trong cùng một mạng con.


Giải trình:

Tập lệnh sẽ gửi một chương trình phát sóng UDP trên Cổng 12001 và thoát nc, sau tải trọng (của chúng tôi tiếng vang lệnh) + 2 giây. IP không cần phải có được thông qua ifconfig rõ ràng, nhưng nó khá dễ phân tích cú pháp ..

Gửi nó tới 255.255.255.255 có nghĩa là phát tới toàn bộ mạng con, bất kể kích thước.

Vì vậy, chúng tôi không cần phải biết chúng tôi đang ở mạng nào.

Về phía khách hàng, chúng tôi lắng nghe với nc cho đến khi chúng tôi nhận được một trọng tải. tôi đã tìm thấy nc kết thúc rõ ràng kết hợp với ngắt dòng (thông qua tiếng vang).

Điểm:1
lá cờ pe

Nếu bạn dùng avahi trên PC nhúng của mình, bạn sẽ không phải phát minh lại/triển khai lại khám phá dịch vụ

Trên PC nhúng:s:

apt-get cài đặt avahi-daemon
systemctl kích hoạt avahi-daemon --now
bỏ bình luận #publish-workstation=yes trong /etc/avahi/avahi-daemon.conf
systemctl tải lại avahi-daemon

Trên máy được sử dụng để khám phá PC nhúng: s

apt-get cài đặt avahi-utils
avahi-browse -atr # sẽ xuất tên và ip: s của thiết bị trên mạng tới thiết bị đầu cuối

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.