У меня есть несколько машин Debian с некоторыми почти осиротевшими интерпретаторами сценария, например /bin/bash3
и /usr/bin/perl510
. Как я могу обнаружить те сценарии, которые все еще имеют вышеупомянутые интерпретаторы в их строке хижины?
#!/bin/bash3
или
#!/usr/bin/perl510
Рекурсивно поиск файловой системы не является действительно жизнеспособным вариантом. Переименование интерпретаторов для создания сбоя сценариев находится также не в картах.
То, в чем я преуспел, использовало incrond
для корня с 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"
Возможно, вам понадобится записать в журнал больше информации, например, рабочий каталог.