Простой сбой инструмента Ping

Я пытаюсь применить то, что я узнал о сценариях оболочки к инструменту ping, но я, может казаться, не разрабатываю то, что я делаю неправильно.

Я хочу, чтобы мой инструмент ping содержал подсказку, которая создает переменную для целевого сайта и количества пакетов, так, чтобы это было допускающим повторное использование, и не принимало значение по умолчанию к отправке непрерывных пакетов к целевому URL.

Мой текущий сценарий следующие:

#!/bin/bash
echo "The....."
figlet -f banner "Pinger"
echo " "
read -p "[*] Enter the target host:   " $TGT
read -p "[*] Enter number of packets to send:   " $PKT
ping -c$PKT $TGT
exit0

Этот сценарий не берет целое число для nmap-c флаг.

Я попытался отладить проблему следующими способами:

ping $TGT работы отлично над своим собственным.

ping -c{$PKT} не выполняется.

ping -c $PKT и ping -c {$PKT} также, не выполняйтесь правильно.

Показанная ошибка:

ping: option requires an arguement -- 'c'

Кто-то может сказать мне, что фиксация так, я могу понять контекст для использования основной переменной?

1
задан 9 September 2019 в 11:34

1 ответ

Во-первых, я игнорирую строки 2-4 из сценария, так как они не важны.

При использовании read, необходимо дать ему имя переменной (TGT). Используя знак доллара ($TGT) относится к значению переменной. В этом случае значение является нулевым, таким образом, read значения по умолчанию к переменной REPLY.

Также:

  1. Условно, прописные имена переменной резервируются для переменных среды (например. PATH) и другие специальные переменные (например. RANDOM).
  2. Всегда лучше использовать описательные имена переменной, как, например, target и n_packets
  3. Всегда переменные кавычки.
  4. exit0 недопустимо, плюс exit 0 замаскирует любые ошибки, которые происходят около конца сценария, плюс exit неявно, даже не потрудитесь писать это.
  5. NBD в этом случае, но использование read -r хорошая привычка.

Таким образом в конце:

#!/bin/bash
read -rp "[*] Enter the target host:   " target
read -rp "[*] Enter number of packets to send:   " n_packets
ping -c "$n_packets" "$target"

Наконец, Shellcheck очень удобен для отладки сценариев оболочки в будущем. Я запустил Ваш скрипт через него и получил максимум от вышеупомянутых точек.

Относительно синтаксиса Вы попробовали, {$PKT}, Я думаю, что Вы были перепутаны с ${PKT}.

3
ответ дан 3 December 2019 в 07:22

Другие вопросы по тегам:

Похожие вопросы: