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 |