Когда Вы работаете:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Вы чрезвычайно только перенаправляете вывод Потока 1 (т.е. stdout
) к /dev/null
.
Это прекрасно, когда Вы хотите перенаправить вывод, который производится нормальным осуществлением программы. Однако в случае, если Вы также хотите перенаправить вывод, вызванный всеми ошибками, предупреждениями или отказами, необходимо также перенаправить stderr
или поток Стандартной погрешности к /dev/null
.
Один способ сделать это предварительно ожидает количество потока, который Вы хотите перенаправить к оператору перенаправления, >
как это: Command 2> /dev/null
Следовательно, Ваша команда была бы похожа:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
Но, заметьте, что мы уже перенаправили один поток к /dev/null
. Почему не просто автожелезнодорожные перевозки на том же перенаправлении? Bash позволяет нам делать это путем определения потокового числа, к которому можно перенаправить к. 2>&1
.
Заметьте &
символ после оператора перенаправления. Это говорит оболочку, которая, что появляется затем, не имя файла, а идентификатор для потока вывода.
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
Будьте осторожны с операторами перенаправления, их порядок имеет большое значение. Если необходимо было перенаправить в неправильном порядке, Вы закончите с неожиданными результатами.
Иначе, в котором можно достигнуть полной тишины, путем перенаправления всех потоков вывода к /dev/null
использование этого ярлыка: &>/dev/null
(или перенаправление к файлу журнала с &>/path/to/file.log
).
Следовательно, запишите свою команду как:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
Вы можете расширить свой диапазон, отредактировав конфигурационный файл:
vi /etc/dnsmasq.conf
Ищите строку dhcp-диапазона
:
dhcp-range=192.168.0.10,192.168.0.50,12h
выдаст от 192.168.0.10
до 192.168.0.50
со сроком аренды 12 часов.
Вы можете посмотреть ваши текущие лизинги с:
cat /var/lib/dnsmasq/dnsmasq.leases
Этот путь может отличаться, в зависимости от вашего дистрибутива. Если его нет, проверьте вышеприведённый конфигурационный файл на:
dhcp-leasefile=<path to lease file>
Вот минимальный пример конфигурационного файла:
interface=eth0
dhcp-range=192.168.0.10,192.168.0.50,12h
dhcp-options=3,192.168.0.1
который прослушивает eth0
и выдаёт 192.168.0.10
на 192.168.0.50
со временем аренды 12 часов. Он также отправляет шлюз по умолчанию (3
) в виде 192.168.0.1
.