Detectar quais scripts estão usando intérpretes antigos

1

Eu tenho algumas máquinas Debian com alguns interpretadores de scripts quase órfãos, por exemplo, /bin/bash3 e /usr/bin/perl510 . Como posso detectar os scripts que ainda possuem os intérpretes acima mencionados em sua linha de shebang?

#!/bin/bash3

ou

#!/usr/bin/perl510

A busca recursiva pelo sistema de arquivos não é realmente uma opção viável. Renomear os intérpretes para fazer com que os scripts falhem também não está nos cartões.

O que consegui foi usar incrond para raiz com IN_OPEN para detectar o uso desses intérpretes antigos. De lá, chamei um script de shell simples para descobrir mais, mas o PPID é o de incrond. Ambos fuser e lsof não retornaram nada.

#!/bin/bash

LOG=/tmp/icc.log
echo "PID  is $$"       >> ${LOG}
echo "PPID is ${PPID}"  >> ${LOG}
echo "\ is ${1}"      >> ${LOG}

echo "fuser ${1}"       >> ${LOG}
fuser ${1}              >> ${LOG}
echo                    >> ${LOG}

echo "lsof ${1}"        >> ${LOG}
lsof ${1}               >> ${LOG}
echo                    >> ${LOG}
    
por Perleone 01.08.2014 / 17:39

1 resposta

3

Crie um script de wrapper assim:

#!/bin/sh

echo "'date' 'whoami' $0 $*" >> /tmp/bash3_use.log

/bin/bash3.bin "$@"

Em seguida, renomeie bash3 para bash3.bin e nomeie esse script como "/ bin / bash3"

Você pode precisar registrar mais informações, por exemplo, o diretório de trabalho.

    
por 01.08.2014 / 20:22