ajuda com o script bash usando o comando find e diff

3

Eu tenho um script bash que eu preciso de ajuda com:

#!/bin/bash
if [ -f "/suid.old" ]
then
find / -perm -4000 -o -perm -2000 ls > suid.old
else
find / -perm 4000 -o -perm -2000 ls > suid.new

diff suid.old suid.new > newchanges.list
fi

quando eu executo ele me dá um erro dizendo: diff: suid.old: Nenhum arquivo ou diretório.

Meu script deve dizer, se suid.old não existir, use o comando find para criar um, ou use o comando find para fazer o que for necessário com o suid.new. depois de encontrar as alterações feitas e redirecioná-lo para newchanges.list

por favor ajude,

    
por Zypher 08.02.2010 / 02:46

3 respostas

1

Remova a barra do nome do arquivo na instrução if . Do jeito que você tem, ele está verificando o arquivo no diretório raiz, mas depois ele é criado em qualquer diretório atual.

Além disso, seu script basicamente diz "se suid.old não existir então faça um diff".

Você pode querer algo como:

#!/bin/bash
if [ ! -f "suid.old" ]
then
    find / -perm -4000 -o -perm -2000 ls > suid.old
fi

if [ ! -f "suid.new" ]
then
    find / -perm 4000 -o -perm -2000 ls > suid.new
fi

diff suid.old suid.new > newchanges.list
mv suid.new suid.old

Isto diz: "Se suid.old não existir, crie-o. Se suid.new não existir, crie-o. Agora que ele foi criado (ou já existe) faça o diff."

    
por 08.02.2010 / 03:36
0

Remova o 'ls' das suas linhas de localização. Eles devem se parecer com find / -perm -4000 -0 -perm -2000 > suid.old

a maneira como você o instala acha acha que ls é um argumento de caminho. Desde encontrar imprime os resultados para STDOUT, apenas fazendo um redirecionamento normal irá obter a saída desejada.

    
por 08.02.2010 / 03:14
0

Minha versão:

#!/bin/bash

if [ ! -f "/suid.old" ]; then                          # note: !
   find / -perm -4000 -o -perm -2000 -ls > /suid.old   # note: dash before ls; slash before file
else
   find / -perm 4000 -o -perm -2000 -ls > /suid.new
   diff /suid.old /suid.new > /newchanges.list
   mv /suid.new /suid.old                              # could be handy
fi
    
por 08.02.2010 / 13:57

Tags