<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.campisano.org/wiki/Script_functions.sh/history?feed=atom</id>
	<title>Script functions.sh - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.campisano.org/wiki/Script_functions.sh/history?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://www.campisano.org/wiki/Script_functions.sh/history"/>
	<updated>2026-06-16T15:13:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://www.campisano.org/mediawiki/index.php?title=Script_functions.sh&amp;diff=1223&amp;oldid=prev</id>
		<title>imported&gt;T1t0: Created page with &quot;&lt;pre&gt; #!/bin/sh # # /srv/config/functions.sh # #    ######################### #############   VARIABILI  ### Percorsi PATH=&quot;/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.campisano.org/mediawiki/index.php?title=Script_functions.sh&amp;diff=1223&amp;oldid=prev"/>
		<updated>2012-11-14T04:25:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; #!/bin/sh # # /srv/config/functions.sh # #    ######################### #############   VARIABILI  ### Percorsi PATH=&amp;quot;/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# /srv/config/functions.sh&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#############   VARIABILI&lt;br /&gt;
&lt;br /&gt;
### Percorsi&lt;br /&gt;
PATH=&amp;quot;/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin&amp;quot;;&lt;br /&gt;
CONF_PATH=&amp;quot;/srv/config/etc&amp;quot;;&lt;br /&gt;
LOG_PATH=&amp;quot;/srv/config/log&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
### Colori&lt;br /&gt;
NORMAL=&amp;quot;\033[0;39m&amp;quot;;&lt;br /&gt;
NORMALBACK=&amp;quot;\033[0;49m&amp;quot;;&lt;br /&gt;
WHITE=&amp;quot;\033[1;37m&amp;quot;;&lt;br /&gt;
WHITEBACK=&amp;quot;\033[1;47m&amp;quot;;&lt;br /&gt;
YELLOW=&amp;quot;\033[1;33m&amp;quot;;&lt;br /&gt;
YELLOWBACK=&amp;quot;\033[1;43m&amp;quot;;&lt;br /&gt;
GREEN=&amp;quot;\033[1;32m&amp;quot;;&lt;br /&gt;
GREENBACK=&amp;quot;\033[1;42m&amp;quot;;&lt;br /&gt;
CYAN=&amp;quot;\033[1;36m&amp;quot;;&lt;br /&gt;
CYANBACK=&amp;quot;\033[1;46m&amp;quot;;&lt;br /&gt;
BLUE=&amp;quot;\033[1;34m&amp;quot;;&lt;br /&gt;
BLUEBACK=&amp;quot;\033[1;44m&amp;quot;;&lt;br /&gt;
PINK=&amp;quot;\033[1;35m&amp;quot;;&lt;br /&gt;
PINKBACK=&amp;quot;\033[1;45m&amp;quot;;&lt;br /&gt;
RED=&amp;quot;\033[1;31m&amp;quot;;&lt;br /&gt;
REDBACK=&amp;quot;\033[1;41m&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
### Caratteri&lt;br /&gt;
UNDERLINE=&amp;quot;\033[1;38m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COLS=`stty size | cut -d &amp;#039; &amp;#039; -f 2 2&amp;gt;/dev/null`&lt;br /&gt;
if test $? -eq 0; then&lt;br /&gt;
    SPACE=&amp;quot;\033[&amp;quot;$(( ${COLS} /4*3 ))&amp;quot;G&amp;quot;;&lt;br /&gt;
else&lt;br /&gt;
    SPACE=&amp;quot;\033[60G&amp;quot;;&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
##############   FUNZIONI&lt;br /&gt;
&lt;br /&gt;
### output all&amp;#039;utente&lt;br /&gt;
echo_start() {&lt;br /&gt;
    echo -ne    &amp;quot; ${GREEN}+${NORMAL}   $1&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_stop() {&lt;br /&gt;
    echo -ne    &amp;quot; ${RED}-${NORMAL}   $1&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_success() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${GREEN} success ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_done() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${GREEN}  done   ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_unknown() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} unknown ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_no_log() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} no_log ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_no_conf() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} no_conf ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_no_dir() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} no_dir ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_no_other() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} no_other ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_running() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${YELLOW} running ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_not_run() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${YELLOW} not_run ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_warning() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${WHITE} warning ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_failure() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${RED} failure ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
echo_no_own() {&lt;br /&gt;
    echo -e    &amp;quot;${SPACE}${BLUE}[${YELLOW} no-own!  ${BLUE}]${NORMAL}&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
### basename senza avere il pacchetto coreutils&lt;br /&gt;
base_name()&lt;br /&gt;
{&lt;br /&gt;
    TEXT=&amp;quot;$1&amp;quot;;&lt;br /&gt;
    TEXT_OLD=&amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    while test &amp;quot;${TEXT}&amp;quot; != &amp;quot;${TEXT_OLD}&amp;quot;; do&lt;br /&gt;
        TEXT_OLD=&amp;quot;${TEXT}&amp;quot;;&lt;br /&gt;
        TEXT=`echo ${TEXT} | cut -d &amp;#039;/&amp;#039; -f 2-`;&lt;br /&gt;
&lt;br /&gt;
        if test -z &amp;quot;${TEXT}&amp;quot;; then&lt;br /&gt;
            echo &amp;quot;${TEXT_OLD}&amp;quot;;&lt;br /&gt;
            return 0;&lt;br /&gt;
        fi;&lt;br /&gt;
    done;&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;${TEXT}&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# resize per i file di log&lt;br /&gt;
resize()&lt;br /&gt;
{&lt;br /&gt;
    FILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
    NEWSIZE=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if test -r &amp;quot;${FILE}&amp;quot;; then&lt;br /&gt;
        SIZE=`du -k &amp;quot;${FILE}&amp;quot; | cut -f 1`;&lt;br /&gt;
&lt;br /&gt;
        if test ${SIZE} -gt ${NEWSIZE}; then&lt;br /&gt;
            dd if=&amp;quot;${FILE}&amp;quot; of=&amp;quot;${FILE}&amp;quot;.tmp bs=1k skip=$(($SIZE-$NEWSIZE)) &amp;amp;&amp;gt; /dev/null;&lt;br /&gt;
            mv -f &amp;quot;${FILE}&amp;quot;.tmp &amp;quot;${FILE}&amp;quot;;&lt;br /&gt;
        fi;&lt;br /&gt;
    fi;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ciclo principale&lt;br /&gt;
daemon_main()&lt;br /&gt;
{&lt;br /&gt;
    case &amp;quot;${ACTION}&amp;quot; in&lt;br /&gt;
        start)&lt;br /&gt;
            echo -en &amp;quot;${WHITE}${TITLE}${NORMAL}...&amp;quot;;&lt;br /&gt;
            ;;&lt;br /&gt;
        stop)&lt;br /&gt;
            echo -en &amp;quot;${WHITE}${TITLE}${NORMAL}...&amp;quot;;&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    test ! -d &amp;quot;${LOG_PATH}&amp;quot; &amp;amp;&amp;amp; echo_no_log &amp;amp;&amp;amp; exit -2;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # testo tutto quello che c&amp;#039;e&amp;#039; da testare&lt;br /&gt;
    N=1;&lt;br /&gt;
&lt;br /&gt;
    while test -n &amp;quot;${PROG[$N]}&amp;quot;; do&lt;br /&gt;
        # controlla l&amp;#039;esistenza di un user, appoggiandosi sul filesystem&lt;br /&gt;
        touch $LOG_PATH/tmp_file &amp;amp;&amp;gt;/dev/null;&lt;br /&gt;
        chown &amp;quot;${OWN[$N]}:root&amp;quot; $LOG_PATH/tmp_file &amp;amp;&amp;gt; /dev/null;&lt;br /&gt;
&lt;br /&gt;
        if test $? -ne 0; then echo_no_own; exit -4; fi;&lt;br /&gt;
        rm -f $LOG_PATH/tmp_file;&lt;br /&gt;
&lt;br /&gt;
        # testo se il programma e&amp;#039; eseguibile&lt;br /&gt;
        test ! -x &amp;quot;${PROG[$N]}&amp;quot; &amp;amp;&amp;amp; echo_unknown &amp;amp;&amp;amp; exit -3;&lt;br /&gt;
&lt;br /&gt;
        # se esistono le altre variabili le testo&lt;br /&gt;
        test -n &amp;quot;${FILE[$N]}&amp;quot; &amp;amp;&amp;amp; test ! -r &amp;quot;${FILE[$N]}&amp;quot; &amp;amp;&amp;amp; echo_no_conf &amp;amp;&amp;amp; exit -5;&lt;br /&gt;
        test -n &amp;quot;${DIR[$N]}&amp;quot; &amp;amp;&amp;amp; test ! -d &amp;quot;${DIR[$N]}&amp;quot; &amp;amp;&amp;amp; echo_no_dir &amp;amp;&amp;amp; exit -6;&lt;br /&gt;
        test -n &amp;quot;${OTHER[$N]}&amp;quot; &amp;amp;&amp;amp; test ! -r &amp;quot;${OTHER[$N]}&amp;quot; &amp;amp;&amp;amp; echo_no_other &amp;amp;&amp;amp; exit -7;&lt;br /&gt;
&lt;br /&gt;
        N=$(($N+1));&lt;br /&gt;
    done;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # eseguo la volonta&amp;#039; dell&amp;#039;admin&lt;br /&gt;
&lt;br /&gt;
    case &amp;quot;${ACTION}&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        start)&lt;br /&gt;
&lt;br /&gt;
            # se l&amp;#039;output da dare all&amp;#039;utente non e&amp;#039; singolo, vado accapo&lt;br /&gt;
            test &amp;quot;${SINGLE_OUTPUT}&amp;quot; = &amp;quot;true&amp;quot; || echo&lt;br /&gt;
&lt;br /&gt;
            # avvio i comandi nell&amp;#039; ordine in cui sono stati dichiarati&lt;br /&gt;
            N=1;&lt;br /&gt;
&lt;br /&gt;
            while test -n &amp;quot;${PROG[$N]}&amp;quot;; do&lt;br /&gt;
                # se questo comando non va nascosto, lo mostro&lt;br /&gt;
                test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_start &amp;quot;${START_OPT[$N]}&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                if test &amp;quot;${DAEMON[$N]}&amp;quot; = &amp;quot;true&amp;quot;; then&lt;br /&gt;
                    # controllo che non sia in esecuzione&lt;br /&gt;
                    # NOTA: da rifare usando i pid di start!!!!&lt;br /&gt;
                    pidof &amp;quot;${NAME[$N]}&amp;quot; &amp;amp;&amp;gt; /dev/null;&lt;br /&gt;
&lt;br /&gt;
                    if test $? -eq 0; then&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_running;&lt;br /&gt;
                    else&lt;br /&gt;
                        su &amp;quot;${OWN[$N]}&amp;quot; -c &amp;quot;${START_OPT[$N]}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${LOG_PATH}/${NAME[$N]}.log&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                        if test $? -eq 0; then&lt;br /&gt;
                            test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_success;&lt;br /&gt;
                        else&lt;br /&gt;
                            test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_failure;&lt;br /&gt;
                        fi;&lt;br /&gt;
                    fi;&lt;br /&gt;
                else&lt;br /&gt;
                    su &amp;quot;${OWN[$N]}&amp;quot; -c &amp;quot;${START_OPT[$N]}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${LOG_PATH}/${NAME[$N]}.log&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                    if test $? -eq 0; then&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_success;&lt;br /&gt;
                    else&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_failure;&lt;br /&gt;
                    fi;&lt;br /&gt;
                fi;&lt;br /&gt;
&lt;br /&gt;
                N=$(($N+1));&lt;br /&gt;
            done;&lt;br /&gt;
&lt;br /&gt;
            test &amp;quot;${SINGLE_OUTPUT}&amp;quot; = &amp;quot;true&amp;quot; &amp;amp;&amp;amp; echo_success;&lt;br /&gt;
&lt;br /&gt;
            ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        stop)&lt;br /&gt;
&lt;br /&gt;
            # se l&amp;#039;output da dare all&amp;#039;utente non e&amp;#039; singolo, vado accapo&lt;br /&gt;
            test &amp;quot;${SINGLE_OUTPUT}&amp;quot; = &amp;quot;true&amp;quot; || echo&lt;br /&gt;
&lt;br /&gt;
            # termino i comandi in ordine contrario a quello di avvio&lt;br /&gt;
            # NOTA: la variabile N presa dal check e&amp;#039; FONDAMENTALE&lt;br /&gt;
            N=$(($N-1));&lt;br /&gt;
&lt;br /&gt;
            while test ${N} -ne 0; do&lt;br /&gt;
                # se questo comando non va nascosto, lo mostro&lt;br /&gt;
                test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_stop &amp;quot;${STOP_OPT[$N]}&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                if test &amp;quot;${DAEMON[$N]}&amp;quot; = &amp;quot;true&amp;quot;; then&lt;br /&gt;
                    # controllo che sia in esecuzione&lt;br /&gt;
                    # NOTA: da rifare usando i pid di start!!!!&lt;br /&gt;
                    pidof &amp;quot;${NAME[$N]}&amp;quot; &amp;amp;&amp;gt; /dev/null;&lt;br /&gt;
&lt;br /&gt;
                    if test $? -ne 0; then&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_not_run;&lt;br /&gt;
                    else&lt;br /&gt;
                        su &amp;quot;${OWN[$N]}&amp;quot; -c &amp;quot;${STOP_OPT[$N]}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${LOG_PATH}/${NAME[$N]}.log&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                        if test $? -eq 0; then&lt;br /&gt;
                            test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_success;&lt;br /&gt;
                        else&lt;br /&gt;
                            test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_failure;&lt;br /&gt;
                        fi;&lt;br /&gt;
                    fi;&lt;br /&gt;
                else&lt;br /&gt;
                    su &amp;quot;${OWN[$N]}&amp;quot; -c &amp;quot;${STOP_OPT[$N]}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${LOG_PATH}/${NAME[$N]}.log&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                    if test $? -eq 0; then&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_success;&lt;br /&gt;
                    else&lt;br /&gt;
                        test &amp;quot;${HIDE_OUTPUT[$N]}&amp;quot; = &amp;quot;true&amp;quot; || echo_failure;&lt;br /&gt;
                    fi;&lt;br /&gt;
                fi;&lt;br /&gt;
&lt;br /&gt;
                N=$(($N-1));&lt;br /&gt;
            done;&lt;br /&gt;
&lt;br /&gt;
            test &amp;quot;${SINGLE_OUTPUT}&amp;quot; = &amp;quot;true&amp;quot; &amp;amp;&amp;amp; echo_success;&lt;br /&gt;
&lt;br /&gt;
            ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        restart)&lt;br /&gt;
            echo&lt;br /&gt;
            ${0} stop;&lt;br /&gt;
            sleep 3s;&lt;br /&gt;
            ${0} start;&lt;br /&gt;
            ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        *)&lt;br /&gt;
            echo    &amp;quot;   Usage: ${0} {start|stop|restart}&amp;quot;;&lt;br /&gt;
            exit -1;&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# End&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;T1t0</name></author>
	</entry>
</feed>