lugh
(usa Debian)
Enviado em 17/08/2016 - 16:36h
Galera , boa tarde
Segue abaixo minha necessidade e também o que já desenvolvi e onde estou parado.
Necessidade:
Preciso fazer em apenas uma unica linha e o mais simples possível a comparação dos shells cadastrados no arquivo /etc/shells com os shells utilizados pelos usuarios, e caso exista algum usuário usando um shell ainda não castrado no /etc/shell ele incremente o arquivo /etc/shells. (isso será disparado via SSH para mais de 2 mil servidores)
awk -F: "! /$(tr "\n" " "< /etc/shells | sed 's/ /|/g;s/|$/$/g;s/\//\\\//g')/ {print $7}" /etc/passwd
teste:x:6226:254:TESTE user - Locked:/home/teste:/bin/false
Pergunta porque esse maldito não reconhece o separador : que defini no -F: ?
Pq quando altero para aspas simples o awk ele me da erro no tr?
awk -F: '! /$(tr "\n" " "< /etc/shells | sed "s/ /|/g;s/|$/$/g/ {print $7}' /etc/passwd
awk: fatal: Unmatched ( or \(: /$(tr "
" " "< /
Meu objetivo depois de resolvido é que fique algo mais ou menos assim:
awk -F: '! /$(tr "\n" " "< /etc/shells | sed "s/ /|/g;s/|$/$/g/ {print $1}' /etc/passwd && xargs {} >> /etc/shells