Funcionalidade e Melhorias do shell script

1. Funcionalidade e Melhorias do shell script

Vinicius Pompeo
Sc4r3cr0w

(usa Slackware)

Enviado em 13/05/2015 - 16:08h

Boa tarde.

Preciso bloquear os usuários que nunca logaram nos servidores e que tenham conta local dentro de cada server. Para isso tentei criar um script basico ( Pois tem somente 2 semanas que mexo ), e gostaria de uma ajuda de vocês ou opnião para melhorar o script.


Criei um script que faz a seguinte função:

Envia um txt com os usuários de aplicações que não podem ser removidos ao servidor que o script conecta. (Server.lst).

Entra em cada servidor da lista do Servers.lst, le os usuários do passwd, separa eles em um txt e em cada nome dentro do txt vou usar o comando finger para descobrir qual usuario nunca logou e a saída do resultado me da os logins que não logaram em um novo txt.

Em seguida uso o comando sort | uniq para colocar em ordem os nomes e tiro repetições de logins caso exista e cria um novo txt no output do comando.

Faço uma comparaçao usando comando diff do txt gerado sem logins repetidos com o txt que enviei dos usuarios de aplicações e tenho somente o resultado dos logins que não são de aplicaçao, gerando um novo txt que tem somente usuários fisicos.

E por fim esta lista de usuários físicos uso o comando usermod -L para bloquear cada um deles jogando o output no servidor local onde iniciei meu script.

Segue o código

Obrigado pela ajuda.. Sou novo em shell script mas to dando sangue rsss

#!/bin/bash

for x in `cat Servers.lst`; do

system_operation=`ssh $x \"uname\"`

if [ "$system_operation" = "Linux" ] ; then

mkdir ./$x

scp ./sysuser.txt root@$x:/tmp/sysuser.txt

ssh $x "cat /etc/passwd | cut -d: -f1 | sort | uniq >> /tmp/passwd.txt"

for y in `ssh $x "cat /tmp/passwd.txt"`; do

ssh $x "finger $y | egrep \"Login|Never\" | cut -d' ' -f2 | sed -n 1p >> /tmp/filter.txt"
done

ssh $x "cat /tmp/filter.txt | sort | uniq >> /tmp/never.txt"

ssh $x "diff /tmp/never.txt /tmp/sysuser.txt | cut -d' ' -f2 >> /tmp/locks.txt"

for z in `ssh $x "cat /tmp/locks.txt"`; do
echo "usermod -L $z" >> ./$x/lockeds.txt
done

ssh $x "rm /tmp/passwd.txt"
ssh $x "rm /tmp/filter.txt"
ssh $x "rm /tmp/never.txt"
ssh $x "rm /tmp/sysuser.txt"
ssh $x "rm /tmp/locks.txt"

fi
done



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts