Вы можете только это сделать если ваш модем или маршрутизатор позволяет запрашивать эту информацию.IP-адрес назначается интерфейсу WAN / Internet на маршрутизаторе или модеме, поэтому у вас должна быть возможность запросить его или подключиться к интернет-службе, которая затем сообщит вам, что это было.
Вы можете использовать DNS для получения ответа, используя это,
dig + short @ resolver1.opendns.com myip.opendns.com
, но для его получения он все равно обращается к внешней службе.
Итак, либо запросите ваш маршрутизатор (если есть интерфейс, который вы можете использовать), либо используйте внешнюю службу.
Конечно, если ваш маршрутизатор является Linux-машиной, вы просто используете ip
или ipconfig
для запроса интерфейса WAN.
Но когда я пытаюсь сохранить вывод во входном файле, он не работает. Входной файл пуст после выполнения команды. Почему?
Потому что > input
заставляет оболочку усекать файл перед выполнением команды tr
. Кстати, вы можете обойти это с помощью более продвинутой обработки дескрипторов в Bash
:
exec 8<>input
exec 9<>input
tr '[A-Z]' '[a-z]' <&8 >&9
exec # <> file
открывает файл в дескрипторе #
при чтении -Режим записи без усечения.
Если у вас есть GNU sed
, вы можете использовать
sed -i 's/.*/\L&/' input
-i
изменить файл на месте s / old / new /
заменить старый
на новый
. *
любые символы в каждой строке \ L
нижний регистр и
совпавшие pattern