En la línia en la que anàvem… Què passa si volem fer servir les pstools en 50 servidors? Una idea és crear una unitat compartida i que tots les executin des d’allà. Pero si tenim alguns en unes xarxes, unes en unes altres (fins i tot en DMZ), amb dominis i sense… No podria haver alguna forma còmoda de copiar-los?
Doncs per aquest motiu he creat aquest petit script, que fa exactament això: copiar les pstools al servidor que volguem. Primer munta la unitat cifs (amb smbmount), després copia els fitxers i després la desmunta.
Està pensat per ser cridat des d’altres scripts. Per exemple, si fem un “winps”, primer que comprovi si estan les pstools instal·lades, i si no ho estan, que les copii. Per això, posarem un fitxer de variables que puguin fer servir tots els scripts, de forma que si volem canviar algun parametre no haguem de modificar-los tots. A aquest fitxer li direm “winvars.sh”.
En l’article complet podeu mirar el codi i descarregar el fitxer.
winvars.sh
#!/bin/bash
TOOLS_DIR=tools
TOOLS_UNIT=d
CREDENTIALS="/home/user/secretfile"
SMBCREDENTIALS="credentials=$CREDENTIALS"
PSCREDENTIALS="-A $CREDENTIALS"
La diferència entre les SMBCREDENTIALS i les PSCREDENTIALS està en la forma d’acceptar-les que té el smbmount i el winexe.
cp_pstools.sh
#!/bin/bash
# We get the script path
PROGPATH=echo $0 | /bin/sed -e 's,[\/][^\/][^\/]*$,,'
# We load our vars
. $PROGPATH/winvars.sh
PSTOOLS_SRC=/home/user/pstools/
RAND_DIR=$1-$RANDOM
[ $# -lt 1 ] && echo "Error, too few parameters" && echo "Use: $0 server [unit]" && exit
[ ! -z "$2" ] && SMBCREDENTIALS="username=$2,password=$3"
mkdir /tmp/$RAND_DIR
smbmount //$1/$TOOLS_UNIT$ /tmp/$RAND_DIR -o $SMBCREDENTIALS
if [ $? -eq 0 ];then
echo "Default credentials"
else
echo "Default credentials doesn't authentify. Try others."
read -p "Type username (DOMAIN/user):" user
read -s -p "Type password:" pass
smbmount //$1/$TOOLS_UNIT$ /tmp/$RAND_DIR -o username=$user,password=$pass
[ $? -ne 0 ] && echo "Credentials error or unit not available (check smbmount errors)" && rmdir /tmp/$RAND_DIR && exit 1
fi
mkdir /tmp/$RAND_DIR/$TOOLS_DIR
cp -av $PSTOOLS_SRC /tmp/$RAND_DIR/$TOOLS_DIR/.
smbumount /tmp/$RAND_DIR
rmdir /tmp/$RAND_DIR