У меня есть несколько машин Debian с некоторыми почти осиротевшими интерпретаторами скриптов, например /bin/bash3
и /usr/bin/perl510
. Как я могу обнаружить те скрипты, у которых все еще есть вышеупомянутые интерпретаторы в своей строке shebang?
#!/bin/bash3
или
#!/usr/bin/perl510
Рекурсивный поиск в файловой системе не является жизнеспособным вариантом. Переименование интерпретаторов, чтобы скрипты не работали, тоже не в картах.
Что мне удалось, так это использовать incrond
для root с IN_OPEN
обнаружить использование этих старых интерпретаторов. Оттуда я вызвал простой сценарий оболочки, чтобы узнать больше, но PPID
это incrond. Обе 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}
Создайте сценарий оболочки следующим образом:
#!/bin/sh
echo "`date` `whoami` $0 $*" >> /tmp/bash3_use.log
/bin/bash3.bin "$@"
Затем переименуйте bash3 в bash3.bin и назовите этот скрипт «/ bin / bash3»
Вам может потребоваться дополнительная информация, например рабочий каталог.