seb annotate tools/sebos @ rev 16

A simple way to handle daemons in seb OS (can be changed, as everything else :-)
author Christophe Lincoln <pankso@slitaz.org>
date Tue Mar 07 00:04:40 2017 +0100 (2017-03-07)
parents 052432697dd3
children ff5c597e5d11
rev   line source
pankso@5 1 #!/bin/sh
pankso@5 2 #
paul@14 3 # sebos: SliTaz Embedded OS - A tool to help getting hands on a Seb-OS
pankso@5 4 # system with some cmdline and Ncurses configs functions. The main goal
paul@14 5 # is to manage a web server. Without gettext dependencies please :-)
pankso@5 6 #
pankso@5 7 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License
pankso@5 8 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@5 9 #
pankso@5 10
pankso@5 11 # /lib/libseb.sh && seb.conf
pankso@5 12 if [ -f "../libseb.sh" ]; then
pankso@5 13 . ../libseb.sh
pankso@5 14 else
pankso@5 15 if ! . /lib/libseb.sh; then
pankso@5 16 echo "Can't source any: libseb.sh"; exit 1
pankso@5 17 fi
pankso@5 18 fi
pankso@5 19 [ -f "/etc/seb.conf" ] && . /etc/seb.conf
pankso@5 20
pankso@5 21 title="SliTaz Embedded OS"
pankso@5 22 doc="/usr/share/doc/seb-os.txt"
pankso@5 23 packages="/var/lib/packages"
pankso@5 24 tmpdir="/tmp/$(basename $0)"
pankso@5 25 tmp="$tmpdir/$$"
pankso@5 26 height='20'
pankso@5 27 width='72'
pankso@5 28
pankso@5 29 # Functions
pankso@5 30
pankso@5 31 help() {
pankso@5 32 cat << EOT
pankso@5 33
pankso@5 34 $(colorize 35 'Usage:') $(basename $0) [command] [file|daemon]
pankso@5 35
pankso@5 36 $(colorize 035 'Commands:')
pankso@5 37
pankso@5 38 -c config Configure the system
paul@14 39 -i info Seb system information
pankso@5 40 -d daemon Run/kill a daemon
pankso@5 41 -p packages List installed packages
pankso@5 42 -v view File viewer
pankso@5 43
pankso@5 44 EOT
pankso@5 45 }
pankso@5 46
pankso@5 47 info() {
pankso@5 48 cat << EOT
pankso@5 49 Hostname : $host_name
pankso@5 50 Seb build date : $build_date
pankso@5 51 SliTaz release : $seb_os_release
pankso@5 52 Seb OS config : /etc/seb.conf
paul@14 53 Network interface : $network_interface
pankso@5 54 Installed packages : $(cat /var/lib/packages | wc -l)
pankso@5 55 Running processes : $(ps -o pid | wc -l)
pankso@5 56 System time : $(date)
pankso@5 57 EOT
pankso@5 58 }
pankso@5 59
pankso@5 60 read_on() {
pankso@5 61 echo -n "Press ENTER to continue"; read
pankso@5 62 }
pankso@5 63
pankso@5 64 quit() {
pankso@5 65 rm -rf ${tmpdir}; exit 0
pankso@5 66 }
pankso@5 67
pankso@5 68 #
pankso@5 69 # GUI Functions
pankso@5 70 #
pankso@5 71
pankso@5 72 # Display any command output: exec_box [title] [command]
pankso@5 73 exec_box() {
pankso@5 74 dialog --cr-wrap --title "{ $1 }" \
pankso@5 75 --ok-label "Close" --msgbox "$($2)" ${height} ${width}
pankso@5 76 }
pankso@5 77
pankso@5 78 # Display a text file: text_box [title] [file]
pankso@5 79 text_box() {
pankso@5 80 dialog --cr-wrap --title "{ $1 }" \
pankso@5 81 --exit-label "Close" --textbox "$2" ${height} ${width}
pankso@5 82 }
pankso@5 83
pankso@5 84 # Show message and percentage on a gauge dialog
pankso@5 85 gauge_msg() {
pankso@5 86 sleep 1; echo -e "XXX\n$1\n$MSG\nXXX"
pankso@5 87 }
pankso@5 88
pankso@5 89 # Set root passwd
pankso@5 90 root_passwd() {
pankso@5 91 dialog --title "{ Root Password }" --colors \
pankso@5 92 --inputbox "\nEnter new password for root" \
pankso@5 93 12 $width 2>${tmp}
pankso@5 94 passwd=$(cat $tmp)
pankso@5 95 [ -z "$passwd" ] && return 0
pankso@16 96 echo "root:$passwd" | chpasswd --md5 2>/dev/null
pankso@5 97 }
pankso@5 98
pankso@5 99 # Add a new user
pankso@5 100 add_user() {
pankso@5 101 dialog --title "{ Add User }" --colors \
pankso@5 102 --inputbox "\nEnter login name for the new \Zb\Z4user" 12 ${width} 2>${tmp}
pankso@5 103 user=$(cat $tmp)
pankso@5 104 [ ! "$user" ] && return 0
pankso@5 105
pankso@5 106 dialog --title "{ Add User }" --colors \
pankso@5 107 --inputbox "\nEnter password for user \Zb\Z4${user}" 12 ${width} 2>${tmp}
pankso@5 108 passwd=$(cat $tmp)
pankso@5 109 [ ! "$passwd" ] && return 0
pankso@5 110
pankso@5 111 adduser -D -g "SliTaz User" ${user}
pankso@5 112 echo "$user:$passwd" | chpasswd --md5 2>/dev/null
pankso@5 113 }
pankso@5 114
pankso@5 115 set_date() {
pankso@5 116 echo ""; echo "Old date: $(date)"
pankso@5 117 rdate -s tick.greyware.com 2>/dev/null
pankso@5 118 echo "New date: $(date)"; echo ""
pankso@5 119 }
pankso@5 120
pankso@5 121 # Main Dialog menu
pankso@5 122 main_box() {
pankso@5 123 mkdir -p ${tmpdir}
pankso@5 124 dialog \
pankso@5 125 --clear --title "{ $title }" \
pankso@5 126 --ok-label "Exec" --cancel-label "Quit" \
pankso@5 127 --menu "" ${height} ${width} 14 \
pankso@5 128 "info" "Seb OS info and status" \
pankso@5 129 "add-user" "Add a new user to Seb-OS" \
pankso@5 130 "root-passwd" "Change root password" \
pankso@5 131 "set-date" "Set system date from the web" \
pankso@5 132 "packages" "List installed packages" \
pankso@16 133 "daemons" "List installed daemons" \
pankso@5 134 "commands" "Display sebos commands" \
pankso@5 135 "quit" "Exit from SliTaz Config" 2>${tmp}
pankso@5 136
pankso@5 137 # Handle options
pankso@5 138 case "$?" in
pankso@5 139 1|255) quit ;;
pankso@5 140 esac
pankso@5 141
pankso@5 142 # Handle actions
pankso@5 143 action=$(cat $tmp)
pankso@5 144 case "$action" in
pankso@5 145 info) exec_box "Seb OS Info" info ;;
pankso@5 146 add-user) add_user ;;
pankso@5 147 root-passwd) root_passwd ;;
pankso@5 148 set-date) clear; set_date; read_on ;;
pankso@5 149 packages) clear; ${0} -p; read_on ;;
pankso@16 150 daemons) clear; ${0} -d; read_on ;;
pankso@5 151 commands) clear; ${0} help; read_on ;;
pankso@5 152 quit) quit ;;
pankso@5 153 esac
pankso@5 154 }
pankso@5 155
pankso@5 156 #
pankso@5 157 # Handle commands
pankso@5 158 #
pankso@5 159
pankso@5 160 case "$1" in
pankso@5 161
pankso@5 162 -c|config)
pankso@5 163 check_root
pankso@5 164 while true; do
pankso@5 165 main_box
pankso@5 166 done ;;
pankso@5 167
pankso@5 168 -i|info)
pankso@5 169 title "SliTaz Embedded OS"
pankso@5 170 info; footer ;;
pankso@5 171
pankso@16 172 -d|daemon*)
pankso@16 173 # Handle daemons
pankso@16 174 daemons="daemons"
pankso@16 175 if [ ! "$2" ]; then
pankso@16 176 title "Installed daemons"
pankso@16 177 for d in $(ls $daemons); do
pankso@16 178 . ${daemons}/${d}
pankso@16 179 echo -n "${d}"; indent 20 "$desc"; unset desc
pankso@16 180 done; footer "Use: $(basename $0) -d [daemon] [--start|--kill|--info]"
pankso@16 181 exit 0
pankso@16 182 fi
pankso@16 183 if [ "$kill" ]; then
pankso@16 184 pid=$(pidof $2)
pankso@16 185 . ${daemons}/${2}
pankso@16 186 echo -n "Killing: $desc (pid $pid)"
pankso@16 187 kill ${pid} 2>/dev/null; status
pankso@16 188 fi
pankso@16 189 if [ "$start" ]; then
pankso@16 190 . ${daemons}/${2}
pankso@16 191 echo -n "Starting: $desc"
pankso@16 192 start; status
pankso@16 193 fi
pankso@16 194 if [ "$info" ]; then
pankso@16 195 . ${daemons}/${2}
pankso@16 196 pid=$(pidof $2)
pankso@16 197 [ ! "$pid" ] && pid="none"
pankso@16 198 title "$desc"
pankso@16 199 echo "$(colorize 036 Pidof $2:) $pid"
pankso@16 200 [ "$pid" != "" ] && ps | grep "$pid" | grep -v "grep" | grep -v "sebos"
pankso@16 201 footer
pankso@5 202 fi ;;
pankso@5 203
pankso@16 204 -p|package*)
pankso@5 205 title "Installed packages"
pankso@5 206 IFS="|"
pankso@5 207 cat /var/lib/packages | while read pkg desc; do
pankso@5 208 echo -n "$(colorize 036 $pkg)"; indent 20 "$desc"
pankso@5 209 done; unset IFS; footer ;;
pankso@5 210
pankso@5 211 -v|view) text_box "$(basename $2)" ${2} ;;
pankso@5 212
pankso@5 213 *_*) $@ ;; # Execute any fun_ctions
pankso@5 214
pankso@5 215 *|help) help ;;
pankso@5 216 esac
pankso@5 217
pankso@5 218 # Clean exit
pankso@5 219 rm -rf ${tmpdir} && exit 0