Остановить команду 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.

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

То, что я сделал, было из другой оболочки, я запускал 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 .. прикованный к && , логика понятна и структура не пойдет не так. Когда вы используете ; и не удается создать каталог, тогда вы не можете ввести его, но вы, возможно, не перестанете меняться.