Copia todos los usuarios .bash_history de una sola vez

1

¿Es posible usar cp para copiar el archivo .bash_history de cada usuario en la misma carpeta (con el nombre de usuario adjunto)?

¿O es al menos posible copiarlos en un conjunto paralelo de carpetas? Parece que no puedo resolver esto.

Tengo acceso root.

user1399747
fuente
3
Sólo un pensamiento de un administrador de sistemas; lo que está sugiriendo es algo así como un guardia de seguridad que busca en los escritorios y casilleros de los empleados. Claro, es propiedad de la compañía y si tu jefe te lo dice, eso es una cosa; pero si no están debidamente informados de que pretendes hacerlo, esperaría una reacción violenta. Si encontraba que alguien me había hecho eso, lo dejaría de inmediato; esa es una gran excusa para pasar a un trabajo mejor remunerado.
Stephan
2
No renunciaría por eso (bueno, no hasta que encontrase un trabajo mejor), pero comenzaría a mirar a mi alrededor. y los señalaría a las leyes locales (holandesas), que hacen que eso sea ilegal a menos que esté en las "reglas de empleados / computadoras". Si no está ahí, entonces estás haciendo cosas ilegales. (Lo que significa que si su jefe le ordena que lo haga, imprima una copia del correo electrónico y la guarde en un lugar seguro. O vaya a un sitio legal y hable con ellos). --- Ahora que es desde un punto de vista legal profesional de IT'er. Si estás en casa con un servidor y algunos amigos, las cosas cambian.
Hennes

Respuestas:

3

tl; dr; for a in /home/* ; do cp $a/.bash_history /tmp/$a.bash_history ; done

Versión más larga:

para un patrón in se repite sobre todos los elementos de un patrón.
El patrón en sí se almacena en la variable llamada una .

Ejemplos:
for a in * ; do echo $a ; done todos los nombres de archivo de eco.
for a in /home/* ; do echo $a ; done Echo los nombres de todos los homedirs en / home.

En lugar de eco Usamos el comando copiar. (cp)

Y como no queremos sobrescribir todos los archivos, debemos cambiar el nombre del destino o concatenarlos en un solo archivo.

.bash_history

Para copiar utilizamos cp $ a / tmp / $ a_file (Todos los archivos ahora tienen nombres diferentes.

Para concatenar, podemos usar cat y adjuntar a la redirección.
for a in /home/* ; do cat $a/.bash_history >> /tmp/all-users_bash_history ; done

Hennes
fuente
Muy cuidada respuesta, gracias! Eso hizo el trabajo.
user1399747
2

Recuerde que esta NO es una forma totalmente infalible de copiar la actividad de un usuario. Esto se debe a que hay opciones que el usuario puede invocar fácilmente para no colocar cosas en el archivo histórico. Así que no contaría con esto como cualquier tipo de mecanismo de auditoría.

Además, como usuario root, es un poco sospechoso espiar el archivo de otros usuarios a menos que haya razones específicas y válidas para hacerlo. Falta un poco de integridad aquí, a menos que les diga que va a hacer esto.

mdpc
fuente
En este caso, toda la clase está husmeando sobre la actividad del resto de la clase.
user1399747
0

Si buscas algo en particular, puedes usar:

grep -e "stuff goes here" /home/*/.bash_history

Fuente

David
fuente