Я работал на хостинговую компанию некоторое время, и это - кошмар для хранения всех пользователей безопасными. Особенно на общей среде. Частные серверы являются путем, легче отслеживать, так как проблемы безопасности изолируются только к той системе.
Некоторые вещи иметь в виду на общем хостинге:
Для частных серверов Вы оставляете безопасность на пользовательской руке, но удостоверяетесь, что установили надлежащее QOS, NIDS и инструменты анти-DOS в своей сети.
Действительно помогло бы, были ли Вы намного более конкретны относительно своего сценария и/или команды. Но в случае, если то, что Вы хотите сделать, протестировать, куда stdin прибывает из, этот сценарий в качестве примера продемонстрирует что для Вас:
#!/bin/bash
if [[ -p /dev/stdin ]]
then
echo "stdin is coming from a pipe"
fi
if [[ -t 0 ]]
then
echo "stdin is coming from the terminal"
fi
if [[ ! -t 0 && ! -p /dev/stdin ]]
then
echo "stdin is redirected"
fi
read
echo "$REPLY"
Выполнения в качестве примера:
$ echo "hi" | ./demo
stdin is coming from a pipe
$ ./demo
[press ctrl-d]
stdin is coming from the terminal
$ ./demo < inputfile
stdin is redirected
$ ./demo <<< hello
stdin is redirected
$ ./demo <<EOF
goodbye
EOF
stdin is redirected
Не зная, что Вы пытаетесь сделать, я утверждал бы, что необходимо писать сценарий так, чтобы Вы всегда знали, собирается ли он попросить stdin или нет. Или это или канал что-то в команду, это, вероятно, будет желать что-то от stdin, но это - вероятно, не лучшая идея.
Если Вы находитесь на Linux, Вы могли бы использовать strace
видеть, пытается ли процесс читать из stdin. Другие платформы имеют подобные программы (например. dtrace
, ktrace
, или truss
).
Вы смогли избегать проблемы в целом путем питания вывода yes
к рассматриваемой команде.