Остановить команду bash без сценария убийства

Поэтому у меня есть следующая команда, запущенная из оболочки

~/for ip in $(cat ip_list);do mkdir $ip; cd $ip; for vuln in $(snmap http);do nmap --script=$vuln $ip -oN $vuln;done cd ../ ; done 

и он работает нормально около дня. Это правильно создает каталоги и перемещается через них.

ОДНАКО, один из скриптов теперь висит …

Итак, что бы я хотел сделать, это использовать ключевую команду, подобную CTR + C, которая убьет эту итерацию nmap, но не выйдет из сценария, который работает. Таким образом, мне не нужно начинать все или изменять список ips.

2 Solutions collect form web for “Остановить команду bash без сценария убийства”

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

То, что я сделал, было из другой оболочки, я запускал ps -a тогда я нашел свой процесс nmap и убил его с kill proc-id . Сценарий продолжался до следующей итерации.

Этот ответ для Баша.

Вы можете использовать ловушку для этого. Это наглядный пример. Чтобы продолжить в цикле, используйте Ctrl + c . Невозможно остановить сценарий, хотя кроме закрытия терминала или его убийства с другого терминала.

 #!/bin/bash trap ps SIGINT for i in abcd; do for j in wxyz; do echo ----$i$j------ && ping stackexchange.com -c 10 done done exit 

Ваш скрипт будет выглядеть примерно так (после некоторых моих улучшений), но заметьте, что он не был протестирован:

 #!/bin/bash trap '' SIGINT for ip in $(cat ip_list); do mkdir $ip && cd $ip && for vuln in $(snmap http);do nmap --script=$vuln $ip -oN $vuln done && cd .. done 

Изменения, введенные мной как && не позволяют вводить логические пути, которые могут привести к ошибке. Если возможно, безопаснее вводить такие ограничения. Когда это делается так:

 mkdir $ip; cd $ip; 

если каталог не может быть создан, то cd приводит к ошибке.

Когда вы выразились так:

 mkdir $ip && cd $ip 

если каталог по какой-либо причине не был создан, то никакие cd будут предприняты. Когда вы сохраняете все команды из mkdir $dir через cd $dir в cd .. прикованный к && , логика понятна и структура не пойдет не так. Когда вы используете ; и не удается создать каталог, тогда вы не можете ввести его, но вы, возможно, не перестанете меняться.

  • Как удаленно определить utorrent-версию другой машины с nmap?
  • Используйте awk для поиска всех портов для каждого IP-адреса, у которых есть https open
  • Запуск сканирования локального порта и обнаружение открытых портов, но не знаете, для чего они используются?
  • Как создавать случайные IP-адреса
  • Как передать несколько строк параметру без цикла for?
  • Как форматировать вывод из nmap в определенном предопределенном формате
  • Как сканировать исходящие закрытые порты с nmap?
  • traceroute: Как показать TTL вдоль хмеля
  • Выполнение сценария Nmap для обнаружения сердечной недостаточности терпит неудачу
  • как использовать только определенные адреса в подсети для traceroute?
  • Почему nmap закрыл мою связь?
  • Linux и Unix - лучшая ОС в мире.