Определите, какие скрипты используют старые интерпретаторы
У меня есть несколько машин Debian с некоторыми почти осиротевшими интерпретаторами скриптов, например /bin/bash3
а также /usr/bin/perl510
, Как я могу обнаружить те сценарии, в которых все еще есть вышеупомянутые переводчики в своей строке Шебанга?
#!/bin/bash3
или же
#!/usr/bin/perl510
Рекурсивный поиск по файловой системе не является жизнеспособным вариантом. Переименование переводчиков, чтобы скрипты перестали работать, также отсутствует в карточках.
То, что мне удалось использовать incrond
для корня с IN_OPEN
обнаружить использование этих старых переводчиков. Оттуда я вызвал простой сценарий оболочки, чтобы узнать больше, но PPID
это что-то из инронда И то и другое fuser
а также lsof
ничего не вернул.
#!/bin/bash
LOG=/tmp/icc.log
echo "PID is $$" >> ${LOG}
echo "PPID is ${PPID}" >> ${LOG}
echo "\$1 is ${1}" >> ${LOG}
echo "fuser ${1}" >> ${LOG}
fuser ${1} >> ${LOG}
echo >> ${LOG}
echo "lsof ${1}" >> ${LOG}
lsof ${1} >> ${LOG}
echo >> ${LOG}
1 ответ
Создайте скрипт-обёртку так:
#!/bin/sh
echo "`date` `whoami` $0 $*" >> /tmp/bash3_use.log
/bin/bash3.bin "$@"
Затем переименуйте bash3 в bash3.bin и назовите этот скрипт "/bin/bash3"
Возможно, вам потребуется зарегистрировать дополнительную информацию, например, рабочий каталог.