No estas registrado.

#1 2014-09-16 12:43:52

x11tete11x
SystemInside Staff
Desde: :(){ :|:& };:
Registrado: 2013-07-22
Mensajes: 253

Script de la muerte ([Ayuda] con un pequeño script bash xD)

Bueno, antes que nada, disculpen el titulo, no me resistí, la onda es así, mis habilidades de bash son bastante basicas (me manejo con programacion pero no es que le de mucha bola xD) lo que quiero hacer es lo siguiente

2 scripts, uno que haga:

Para cada usuario del sistema busque el archivo /home/<USUARIO>/.config/gtk-3.0/settings.ini y le agrege (si no existe) la linea: gtk-shell-shows-menubar = 1 al final.

En caso de que no exista /home/<USUARIO>/.config/gtk-3.0/settings.ini lo debe crear y debe contener:

[Settings]

gtk-shell-shows-menubar = 1

y el segundo script es para "desinstalarlo":

necesito que haga Para cada usuario busque el archivo /home/<USUARIO>/.config/gtk-3.0/settings.ini y si existe remueva la linea gtk-shell-shows-menubar = 1


todo ésto es para hacer un pkgbuild mejorado del appmenu-gtk3 , el cual quiero que se configure automaticamente

Ultima edición por x11tete11x (2014-09-16 12:45:02)

Desconectado

#2 2014-09-16 14:38:21

nano
BOFH del averno
Desde: ./app/controllers/nano.js
Registrado: 2011-12-05
Mensajes: 1,335

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

*hace la WadaSeñal* ...


Ahora espera que responda xD


nano_dice_by_breakingnano-d4t1n5y.png

Desconectado

#3 2014-09-16 23:14:38

Wada
Staff
Registrado: 2012-07-31
Mensajes: 448
Página Web

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

nano escribió:

*hace la WadaSeñal* ...

Ahora espera que responda xD

Hahahahaha I'm so fucking tough...

@Tete
Sobre el script no es complicado, tome los directorios /home/* de /etc/passwd con grep y delimite con cut lo demás son echo, if, for y re direcciones

Esta en un script solo agrega el argumento -i para install -r para remove;

bash scriptDeLaMuerte.sh -i #Para instalar
bash scriptDeLaMuerte.sh -r #Para remover

En caso de que no exista la carpeta gtk-3.0 la crea como no la tengo yo hahahaha.

#!/bin/bash

function install(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
        file=$i/.config/gtk-3.0/settings.ini
        folder=$i/.config/gtk-3.0
	if [ -d $folder ]; then
	    [ -f $file ] && echo "gtk-shell-shows-menubar = 1" >> $file || echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file
	else 
	    echo "El directorio $folder no existe; Se creara..."
	    mkdir $folder
	    echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file
	fi
    done
    exit 0
}

function remove(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
        file=$i/.config/gtk-3.0/settings.ini
	[ -f $file ] && sed -i /gtk-shell-shows-menubar/d $file || echo "$file No existe"
    done
    exit 0
}

case "$1" in
    -i) install;;
    -r) remove;;
    *) echo -e "Usage $0 [args]\n-i = install\n-r = remove";;
esac

Espero que sea lo que necesitas si no, escribe y lo mejoramos hahahaha.
P.D. Lo tome de /etc/passwd por que fue lo mas rápido que se me ocurrió mientras leía.

Ultima edición por Wada (2014-09-16 23:20:24)


[⠠⠵] || Archlinux || Awesome || urxvt || Bash

Desconectado

#4 2014-09-17 22:26:37

x11tete11x
SystemInside Staff
Desde: :(){ :|:& };:
Registrado: 2013-07-22
Mensajes: 253

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

Wada escribió:
nano escribió:

*hace la WadaSeñal* ...

Ahora espera que responda xD

Hahahahaha I'm so fucking tough...

@Tete
Sobre el script no es complicado, tome los directorios /home/* de /etc/passwd con grep y delimite con cut lo demás son echo, if, for y re direcciones

Esta en un script solo agrega el argumento -i para install -r para remove;

bash scriptDeLaMuerte.sh -i #Para instalar
bash scriptDeLaMuerte.sh -r #Para remover

En caso de que no exista la carpeta gtk-3.0 la crea como no la tengo yo hahahaha.

#!/bin/bash

function install(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
        file=$i/.config/gtk-3.0/settings.ini
        folder=$i/.config/gtk-3.0
	if [ -d $folder ]; then
	    [ -f $file ] && echo "gtk-shell-shows-menubar = 1" >> $file || echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file
	else 
	    echo "El directorio $folder no existe; Se creara..."
	    mkdir $folder
	    echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file
	fi
    done
    exit 0
}

function remove(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
        file=$i/.config/gtk-3.0/settings.ini
	[ -f $file ] && sed -i /gtk-shell-shows-menubar/d $file || echo "$file No existe"
    done
    exit 0
}

case "$1" in
    -i) install;;
    -r) remove;;
    *) echo -e "Usage $0 [args]\n-i = install\n-r = remove";;
esac

Espero que sea lo que necesitas si no, escribe y lo mejoramos hahahaha.
P.D. Lo tome de /etc/passwd por que fue lo mas rápido que se me ocurrió mientras leía.


muchisimas gracias! todavía no lo probe, pero tengo una duda en una parte:

if [ -d $folder ]; then
	    [ -f $file ] && echo "gtk-shell-shows-menubar = 1" >> $file || echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file

si el archivo /home/<usuario>/.config/gtk-3.0/settings.ini ya existia y ya contenia la linea gtk-shell-shows-menubar = 1 , esa instruccion, no agregaria la linea 2 veces?

Desconectado

#5 2014-09-17 22:40:28

Wada
Staff
Registrado: 2012-07-31
Mensajes: 448
Página Web

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

x11tete11x escribió:

muchisimas gracias! todavía no lo probe, pero tengo una duda en una parte:

if [ -d $folder ]; then
	    [ -f $file ] && echo "gtk-shell-shows-menubar = 1" >> $file || echo -e "[Settings]\n\ngtk-shell-shows-menubar = 1" > $file

si el archivo /home/<usuario>/.config/gtk-3.0/settings.ini ya existia y ya contenia la linea gtk-shell-shows-menubar = 1 , esa instruccion, no agregaria la linea 2 veces?

Hahahaha tienes razón olvide ese pequeño detalle, un segundo...

[...]
Una infinidad de segundos después...
[...]

#!/bin/bash

newMenubar="[Settings]\n\ngtk-shell-shows-menubar = 1"
menubar="gtk-shell-shows-menubar = 1"

function install(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
	user=$(cat /etc/passwd | grep $i | cut -d: -f1)
        file=$i/.config/gtk-3.0/settings.ini
        folder=$i/.config/gtk-3.0
	echo "Para el usuario $user en $i" 
	if [ -d $folder ]; then
	    if [ -f $file ]; then 
		if grep -Fxq "$menubar" $file; then
		    echo ">> La linea $menubar ya existe."
		else
		    echo $menubar >> $file
		    echo ">> Se agrego la linea a $file"i
		fi
	    else
		echo -e $newMenubar > $file
		echo ">> creado $file"
	    fi
	else     
	    echo ">> El directorio $folder no existe; Se creara..."
	    mkdir $folder
	    echo -e $newMenubar > $file
	    echo ">> creado $file"
	fi
    done
    exit 0
}

function remove(){
    for i in $(cat /etc/passwd | grep "/home/" | cut -d: -f6); do
	user=$(cat /etc/passwd | grep $i | cut -d: -f1)
        file=$i/.config/gtk-3.0/settings.ini
	if grep -Fxq "$menubar" $file; then
	    sed -i /gtk-shell-shows-menubar/d $file
	    echo ">> Se elimino la linea $menubar a el usuario $user"
	else
	    echo "$file No existe con el usuario $user"
	fi
    done
    exit 0
}

if [[ $# -eq 1 ]]; then
    case "$1" in
	-i) install;;
        -r) remove;;
	*) echo -e "Usage $0 [args]\n-i = install\n-r = remove";;
    esac
else
    echo "Error con argumentos"
    exit 2
fi

Varias correciones, muestra mensaje de que hace o deshace hahaha y cosas así

Ultima edición por Wada (2014-09-17 23:55:48)


[⠠⠵] || Archlinux || Awesome || urxvt || Bash

Desconectado

#6 2014-09-18 11:02:07

nano
BOFH del averno
Desde: ./app/controllers/nano.js
Registrado: 2011-12-05
Mensajes: 1,335

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

¿Ves? La WadaSeñal funciona xD


nano_dice_by_breakingnano-d4t1n5y.png

Desconectado

#7 2014-09-18 12:04:45

x11tete11x
SystemInside Staff
Desde: :(){ :|:& };:
Registrado: 2013-07-22
Mensajes: 253

Re: Script de la muerte ([Ayuda] con un pequeño script bash xD)

gracias! big_smile, ahora con ese monstruo probare de engancharlo a mi pkgbuild xDDD

Desconectado

Pie de página

Powered by FluxBB