Shawn J. Goff сделал много правильных замечаний, но не включал целую историю:
Ubuntu на самом деле не использует оболочку удара, но очень похожую, названную тире. Сценарии, которые требуют удара, могут работать немного неправильно при вызове путем выполнения
/bin/sh
сценарий, потому что Вы только что назвали сценарий удара с помощью интерпретатора тире.
Много системных сценариев (как в init.d, в / и т.д. и так далее) имеет хижину #!/bin/sh
, но /bin/sh
на самом деле символьная ссылка на другую оболочку - в старину /bin/bash
, в наше время /bin/dash
. Но когда один из них вызывается как /bin/sh
, они ведут себя по-другому, т.е. они придерживаются режима эмуляции POSIX.
Как они делают это? Ну, они осматривают, как они были вызваны.
Может сам сценарий оболочки тестировать, как он был вызван, и разные вещи, в зависимости от этого? Да, это может. Таким образом, способ, которым Вы вызываете его, может всегда приводить к различным результатам, но конечно это редко делается для раздражения Вас.:)
Как показывает опыт: Если Вы изучаете определенную оболочку как удар, и запись управляет из учебного руководства по удару, помещенного #!/bin/bash
в заголовке, нет #!/bin/sh
, кроме, где иначе отмечено. Еще Ваши команды могли бы перестать работать. И если Вы не записали сценарий сами, вызовите его непосредственно (./foo.sh
, bar/foo.sh
) вместо того, чтобы предположить оболочку (sh foo.sh
, sh bar/foo.sh
). Хижина должна вызвать правильную оболочку.
И вот два других вида вызова:
cat foo.sh | dash
dash < foo.sh
Как это:
nc -z hostname 22 > /dev/null
echo $?
Если это 0
затем это доступно. Если это 1
затем это не.
Используйте netcat:
nc -z localhost 22
Из страницы справочника
-z Specifies that nc should just scan for listening daemons,
without sending any data to them.
nc -z -w 2 192.168.0.123
(-w опция тайм-аута, в секундах) не делает тайм-аута :|
– Amo__
03.02.2011, 01:12
z
в. кого бы ни Вы сканируете, все еще может получить информацию того, кто сделал сканирование только, не обеспечивая identification string
– amrx
11.09.2016, 23:37
Что относительно
MACHINE=192.168.0.8
exec 3>/dev/tcp/${MACHINE}/22
if [ $? -eq 0 ]
then
echo "SSH up"
else
echo "SSH down"
fi
/dev/tcp
. Так как Ubuntu является полученный Debian, может также (но у меня нет специальных знаний). Но если /dev/tcp
доступно, затем да это совершенно допустимо.
– bahamat
02.02.2011, 22:35
exec 3>/dev/tcp/${HOST}/22
действительно "причудливые" взгляды
– Amo__
03.02.2011, 01:17
nc: invalid option -- 'z'
– valentin_nasta 18.01.2017, 09:26