-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvio_ficheros
executable file
·152 lines (121 loc) · 3.96 KB
/
envio_ficheros
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/ksh
### Script para enviar ficheros a multiples maquinas, creado en un rato libre, necesita pulirse y añadir funcionalidades
### 0.2
### Daniel Molina
#set -x
#exec > /var/tmp/$$ 2>&1
SCP=/usr/bin/scp
print_uso()
{
echo "Este script sirve para enviar un fichero a multiples máquinas"
echo "Uso: "
echo "Este script necesita parámetros para funcionar"
echo "-h para mostrar la ayuda"
echo "-f para pasar el fichero a enviar. NECESARIO"
echo "-M fichero con la lista de maquinas a las que se quiere enviar. NECESARIO"
echo "-P password de TODAS las maquinas, OJO!! si el fichero de maquinas tiene una passwod en una maquina priorizara la password del fichero, OJITO!! usa el comando sshpass"
echo "-p path completo donde dejar el fichero, sin este parametro dejara el fichero en el /home del usuario, asegurate de tener permiso de escritura en el directorio"
echo "-u usuario, por defecto cogera el usuario con el que te has logeado en la maquina desde donde ejecutas este script"
echo "El fichero de maquinas puede contener las password de cada una separadas por un espacio despues de su respectiva maquina"
echo "El fichero de maquinas puede contener el usuario de cada maquina separado por un espacio despues de su respectiva password OJITO!! hay que especificar la password tambien en el fichero si se pone el usuario en el fichero"
echo "Ejemplo del fichero con password incluida: skynet-server WeWillRise root"
echo "Ejemplo de uso del comando: envio_ficheros.sh -f ultimate_trojan -u jconnor -p /home/resistance -M /home/user/skynet-servers -P WeWillRise"
}
if [ $# -eq 0 ]; then
echo "No se han introducido parametros"
print_uso
exit 3
fi
while [ $# -gt 0 ]; do
case $1 in
"-h") print_uso
exit 0
shift
;;
"-f") FICHERO=$2
shift
;;
"-M") LISTA=$2
shift
;;
"-P") CONTRASENA=$2
shift
;;
"-u") USUARIO=$2
shift
;;
"-p") RUTA=$2
shift
;;
*)
shift
esac
done
if [ -z $FICHERO ] || [ -z $LISTA ]; then
echo "No se han introducido parametros suficientes parametros"
if [ -z $FICHERO ]; then
echo "No se ha introducido un fichero a enviar"
fi
if [ -z $LISTA ]; then
echo "No se ha introducido un fichero con la lista de maquinas a enviar"
fi
print_uso
exit 3
fi
if [ -z "$USUARIO" ]; then
USUARIO=$(logname)
fi
if [ -n "$CONTRASENA" ]; then
MULTIPASE="sshpass -p"$CONTRASENA
fi
i=1
ERR=0
BUENOS=0
CUENTAFALLOS=0
CUENTABUENOS=0
grep -v ^# $LISTA |while read MAQUINA PASSFICHERO USR
do
if [ -n "$PASSFICHERO" ]; then
MULTIPASE="sshpass -p"$PASSFICHERO
if [ -n "$USR" ]; then
USUARIO=$USR
fi
fi
#habria que filtrar que el fichero de maquinas no tenga ningun espacio al final del nombre de la maquina si no tiene password
echo "--TARGET--" $MAQUINA
$MULTIPASE $SCP $FICHERO $USUARIO@$MAQUINA:$RUTA > /dev/null
if [ $? -ne 0 ]; then
ERR=$(($ERR+1))
CUENTAFALLOS=$(($CUENTAFALLOS+1))
FALLOS[$ERR]=`echo $MULTIPASE " scp" $FICHERO $USUARIO"@"$MAQUINA":"$RUTA`
else
BUENOS=$(($BUENOS+1))
CUENTABUENOS=$(($CUENTABUENOS+1))
CORRECTOS[$BUENOS]=`echo $MULTIPASE " scp" $FICHERO $USUARIO"@"$MAQUINA":"$RUTA`
fi
if [ -n "$CONTRASENA" ]; then
MULTIPASE="sshpass -p"$CONTRASENA
fi
i=$(($i+1))
done
if [ "$ERR" -ge 1 ]; then
echo "Han fallado las siguientes transferencias: "
CONTADORFALLOS=0
ERR=0
until [ $CONTADORFALLOS -gt $CUENTAFALLOS ]; do
ERR=$(($ERR+1))
echo ${FALLOS[$ERR]}
CONTADORFALLOS=$(($CONTADORFALLOS+1))
done
fi
if [ "$BUENOS" -ge 1 ]; then
echo "Se supone que las siguientes transferencias se han realizado con exito"
CONTADORBUENOS=0
BUENOS=0
until [ $CONTADORBUENOS -gt $CUENTABUENOS ]; do
BUENOS=$(($BUENOS+1))
echo ${CORRECTOS[$BUENOS]}
CONTADORBUENOS=$(($CONTADORBUENOS+1))
done
fi
exit 0