Copiant automàticament les pstools al servidor windows des del teu linux

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

Tomàs

Tomàs

Ja posaré alguna cosa