Pagina 1 di 1

Inviato: 9 novembre 2008, 15:02
da aleph
Ho fatto un paio di funzioni semplici-semplici per avviare-fermare-ecc i demoni senza dover digitare sempre sudo /etc/rc.d/*** xxx :P finora non mi hanno dato problemi e le trovo molto comode (le ho messe nel .bashrc ;). . . l'uso è semplicissimo, ad esempio per fermare mpd basta dare '$ stop mpd' e per riavviare samba '$ restart samba' . . magari possono essere utili a qualcun'altro o potete darmi qualche consiglio/indicazione su possibili bug/miglioramenti :P :

Codice: Seleziona tutto

daemon_do() {
	DAEMON="/etc/rc.d/$1"
	if [ -f "$DAEMON" ]
	then
		if [[ "`id -u`" == "0" ]] 
		then
			"$DAEMON" "$2"
		else
			sudo "$DAEMON" "$2"
		fi
		return $?
	else
		return 1
	fi
}
start() {
	daemon_do "$1" start
}
stop() {
	daemon_do "$1" stop
}
restart() {
	if [ -f "/etc/rc.d/$1" ]
	then	
		daemon_do "$1" restart
	else
		killall "$1"
		if $?
		then
			"$1" &
		fi
	fi
}
reload() {
	daemon_do "$1" reload
}
sync() {
	daemon_do "$1" sync
}
inoltre ne ho fatta anche una per attivare-fermare il nat tra due interfacce di rete . . non sono un esperto di iptables, ho un po scopiazzato in giro, ma funziona piuttosto bene ;) :

Codice: Seleziona tutto

nat() {
	. /etc/rc.conf
	. /etc/rc.d/functions
	if [[ "`id -u`" != "0" ]]
	then 
		sudo nat $@
		return $?
	fi
	if [[ $1 == "stop" ]]
	then
		stat_busy "stopping nat"
		iptables -t nat -F
		iptables -F
		echo 0 > /proc/sys/net/ipv4/ip_forward
		stat_done
	else 
		if [[ ( $1 == "start" ) && ( $# == "3" ) ]]
		then
			INTIF=$2
			EXTIF=$3
			stat_busy "nat-ing from $INTIF to $EXTIF"
			echo 1 > /proc/sys/net/ipv4/ip_forward
			iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
			iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state RELATED,ESTABLISHED -j ACCEPT
			iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
			stat_done
		else 
			echo "usage: $0 [stop,start source dest]"
		fi
	fi
}
ciao :P

Inviato: 10 novembre 2008, 16:39
da psychoweb
è un'idea molto buona, per le mie esigenze la trovo più che utilissima!
spesso devo avviare/fermare demoni da user, e tra sudo e il path degli script in rc.d mi sono ridotto ad una scimmia ammaestrata che con l'aiuto del tasto tab ci mette due sudatissimi secondi per scrivere tutta quella roba. In effetti uno script del genere è proprio quello che ci vuole, tra l'altro è semplicissimo, non so perchè non ci avevo pensato :D

anzi, mi sa che come esercizio didattico provo a riscriverlo per conto mio, poi nel caso confronto, o se proprio non ci riesco, lo "rubo" da questa pagina.... ;)

Inviato: 10 novembre 2008, 17:48
da weseven
mhà, io continuo a preferire la history search di bash alle funzioni personalizzate. è più trasparente, più veloce e non mi dimentico pezzi che non userò mai nel .bashrc o da altre parti.

Inviato: 11 novembre 2008, 2:29
da psychoweb
mi sono permesso di scrivere due righe che potrebbero migliorare l'utilità delle tue funzioni.

provo a scriverle con i tuoi nomi di funzione:

Codice: Seleziona tutto

function _daemon_do () {
  cur=${COMP_WORDS[COMP_CWORD]}
  COMPREPLY=( $( compgen -W '$(ls /etc/rc.d/)' -- $cur ) )
}

complete -F _daemon_do start stop restart
Insomma, ho provato a programmare un possibile completamento bash. A essere sincero ci ho messo un bel po' per tirare fuori questa cosa, alla fine ho scopiazzato da qualche esempio perchè la man page di bash a riguardo è molto (ma molto!) criptica, e l'ho personalizzato secondo le esigenze.
Anche qui, è una questione di comodità personale, a me risparmia di scrivere "jack-audio-connection-kit" che completa di solito quando eseguo il comando "sudo /etc/..." ...etc. ;)
a questo punto però lo vedrei più come scriptino a sè stante, l'idea mi piace, e spero di non essere l'unico :-P

@weseven: io la history di bash l'ho disabilitata, quindi verrebbe un po' male la ricerca in quel modo (e no, non la riabiliterei solo per la gestione dei demoni). Inoltre come ho scritto prima potrebbe benissimo essere uno script autonomo, fuori da .bashrc.....e magari impacchettato e installato con pacman ;)

Naturalmente esagero, dopo tutto è una questione di gusti. Ad esempio, io sono un fanatico della sostuzione bash con i punti esclamativi (stile "!-2:1"), ma riconosco che può non essere il massimo della vita per altri :)