1

Мне нужен скрипт, чтобы можно было определить, подключен ли компьютер к моей домашней сети, к моей рабочей сети, o к другой сети, либо по Wi-Fi, либо по кабелю.

У меня вопрос: есть ли какой-нибудь сетевой идентификатор и как его получить из сценария оболочки?

3 ответа3

3

Если для этого есть простая команда, я об этом не знаю. Что может сработать так:

wireless=<put name of wireless card here, e.g. wlp2s0>
wired=<put name of wired network adapter here, e.g. p1p1>
dev=$(ip route | grep default | awk '{print$5}') #finds the device that your Internet is coming through
if [ x$dev = x$wired ]; then
    echo "Wired connection."
elif [ x$dev = x$wireless ]; then
    echo -n "Wireless connection: "
    iwconfig $wireless 2>&1 | grep ESSID | sed 's@.*ESSID:\"\(.*\)".*@\1@' # prints ESSID of wireless connection only
fi

Это должно сработать, если вы не забудете заполнить проводные / беспроводные переменные.

РЕДАКТИРОВАТЬ Вы определенно ДОЛЖНЫ сказать, что вы используете Cygwin под Windows. Этот скрипт, скорее всего, не будет работать под Cygwin. Я никогда не использовал cygwin, поэтому не знаю, на каком уровне он имитирует Linux. Если этот скрипт не работает, вам не повезло (я думаю).

2

Ваш дом, работа и т.д. Различаются по разным общедоступным IP-адресам, поэтому вы можете использовать любую команду CLI, которая возвращает ваш общедоступный IP-адрес и действовать в зависимости от результата таких команд.

Любая из этих команд будет работать в обычном дистрибутиве Linux, я уверен, что wget существует в Cygwin, я просто не знаю о curl и lynx:

wget -q -O - ipecho.net/plain
curl ipecho.net/plain
lynx --dump ipecho.net/plain

Публичный адрес имеет дополнительный бонус, заключающийся в том, что вы можете отличить другую локальную сеть, используя ту же подсеть, что и ваша работа / дом / что-то еще, от вашей работы / дома / ..., если вы когда-нибудь перенесете свой ноутбук на новое место.

-1

Отличаются ли маски подсетей в зависимости от того, к какой сети вы подключаетесь? Ваш дом будет 255.255.255.0, в то время как ваша работа будет VLSM в 255.255.255.254 или меньше.

Проверьте через командную строку в Windows с помощью ipconfig и проверьте маску подсети с помощью ifconfig для Linux.

Другой способ определить, разрешить ли DNS с вашего компьютера и посмотреть, какой DNS его принимает: это ваш интернет-провайдер, которого вы используете дома, или DNS-серверы в домене вашего офиса? Это также скажет вам, я имею в виду взглянуть на ваши таблицы маршрутизации также.

Проверьте это и посмотрите, если вы первые маршруты из домена вашей компании, запустите это из командной строки. Найдите командную строку, откройте ее и введите:

netstat -f

 TCP    10.0.0.145:56433       stackoverflow.com:http  ESTABLISHED  
 TCP    10.0.0.145:56462       stackoverflow.com:http  ESTABLISHED   
 TCP    10.0.0.145:56592       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56748       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56782       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56902       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56949       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:57056       stackoverflow.com:http  ESTABLISHED

Пример выше показывает, где мы сейчас находимся, IP-адреса разрешены, так как наш -f для этого сайта должен быть. Кто-то сказал, что вы используете Cygwin в среде Windows. Почему бы вам просто не добавить каталог "cygwin\bin" в путь к Windows? Вы получите полный доступ к большинству инструментов GNU и сможете использовать их практически так же, как в Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .