Определите, какие скрипты используют старые интерпретаторы

У меня есть несколько машин 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"

Возможно, вам потребуется зарегистрировать дополнительную информацию, например, рабочий каталог.

Другие вопросы по тегам