ping(1)
comprueba la red la conectividad (envía una SOLICITUD DE ECO ICMP -al objetivo y espera una respuesta; tenga en cuenta que algunos "administradores" de red totalmente despistados bloquean ICMP y no obtendrá respuestas incluso si el host es accesible ).
DNS (es decir, host(1)
o dig(1)
resultados )comprueba si el servidor de nombres para el nombre de host es accesible y responde.
Están totalmente separados, el servidor de nombres generalmente se ejecutará en una máquina diferente, y los RFC incluso exigen que se guarde una copia de los datos en al menos dos servidores en diferentes redes. Por lo tanto, el host puede estar inactivo o ser inaccesible, mientras que el DNS responde. O al revés.
read
будет "взаимодействовать" с пользователем через stdin (, где он будет считывать информацию из )и stderr (, где он будет печатать свое приглашение -p
, если оно есть ).
Если stdin является скриптом , read
получит от него свои данные, что приведет к пропуску строки:
$ echo '
read foo
what the -)(*$;?
echo "$foo"
' | bash
what the -)(*$;?
Вряд ли это хорошая практика, и она будет работать не во всех оболочках. Также обратите внимание, что при передаче скриптов через stdin bash
придется читать их байт -на -байт.
В вашем примере весь скрипт представлял собой одну строку, поэтому встроенная функция read
просто получит EOF и не установит никаких переменных.
Если вы хотите, чтобы read
всегда читал с управляющего tty, то явно перенаправьте его:
read var </dev/tty
Это также следует использовать с осторожностью.Никто не оценит вас, если им придется использовать expect(1)
для инструментирования вашего скрипта.