Эхо проблема, когда скрипт Bash вызывает другой скрипт Bash - PullRequest
1 голос
/ 01 июля 2019

У меня есть очень простой Bash-скрипт, который открывает порт 9999 с использованием nc.traditional (поскольку nc больше не имеет аргумента -e), а затем вызывает другой Bash-скрипт с использованием nc.traditional '-e аргумента. Цель второго сценария - запросить имя и age человека, подключенного к Linux-порту на этом порту, и просто сохранить эту информацию в двух отдельных файлах.

Все работает хорошо, за исключением того, что я намереваюсь отключить echo ing, когда кто-то вводит свой age , и это именно то, что вызывает сбои и ошибки. Насколько мне известно, это может быть из-за file descriptors или это может быть что-то еще, что я не знаю.

Очевидно, что использование -s ключа команды read не работает, когда скрипт вызывается другим скриптом.

Использование stty -echo во втором скрипте приводит к появлению ошибки "stty: 'стандартный ввод': неуместно ioctl для устройства" при выводе первого скрипта.

Также я хотел бы определить тайм-аут для моего приглашения, чтобы пользователь не блокировал мои ресурсы. Команда timeout также не работает, когда она вызывается другим скриптом.

Первый скрипт Bash:

#!/bin/bash
while true; do
    nc.traditional -n -l -p 9999 -e ./NameAge.sh
    sleep 5
done

Второй скрипт Bash:

#!/bin/bash
echo -n "Please enter your name:"
read name
echo "name: $name" >> /tmp/name.txt
echo -n "Please enter your age:"
read age
echo "age: $age" >> /tmp/age.txt

Я очень признателен, если бы вы могли помочь мне с этой проблемой.

Заранее спасибо

1 Ответ

0 голосов
/ 01 июля 2019

Проблема в том, что вы (сервер) не можете управлять терминалом человека, который подключается (клиент), и вам нужно отключить эхо, чтобы выполнить то, что вы хотите.Я не думаю, что есть обходной путь.Вы можете ответить с помощью escape-кодов, чтобы очистить предыдущую строку, но это не будет иметь никакого эффекта, пока пользователь не нажмет ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...