slitaz-forge annotate tank/tank @ rev 54

Some rename and fixes to tank
author Christophe Lincoln <pankso@slitaz.org>
date Fri Apr 08 19:08:47 2011 +0200 (2011-04-08)
parents
children 0c67d68f4c81
rev   line source
pankso@54 1 #!/bin/sh
pankso@54 2 # Taztank - Admin Tank, backup, update and give stats.
pankso@54 3 #
pankso@54 4 # (C) 2011 SliTaz - GNU General Public License.
pankso@54 5 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@54 6 #
pankso@54 7
pankso@54 8 REPOS="/home/slitaz/repos"
pankso@54 9 WWW="/home/slitaz/www"
pankso@54 10 VHOST="$WWW/tank"
pankso@54 11 WEBSITE="$WWW/website"
pankso@54 12 BACKUPS="/home/backups"
pankso@54 13
pankso@54 14 usage() {
pankso@54 15 echo -e "\nUsage: `basename $0` [command]
pankso@54 16 Commands:
pankso@54 17 stats|-s Display some Tank stats
pankso@54 18 backup|-b Backup files and MySQL DB
pankso@54 19 chroot|-c Move a user into a new chroot location
pankso@54 20 up-www|-uw Update website http://www.slitaz.org/
pankso@54 21 up-tank|-ut Update http://tank.slitaz.org/
pankso@54 22 up-people|-up Update http://people.slitaz.org/
pankso@54 23 up-boot|-ub Update http://boot.slitaz.org/
pankso@54 24 up-stats|-us Update Awstats statistics (run by cron)
pankso@54 25 adduser|-au Add user on tank\n"
pankso@54 26 }
pankso@54 27
pankso@54 28 case "$1" in
pankso@54 29 stats|-s)
pankso@54 30 # Report some stats
pankso@54 31 clear
pankso@54 32 cat << EOF
pankso@54 33
pankso@54 34 Connected user
pankso@54 35 --------------
pankso@54 36 `who`
pankso@54 37
pankso@54 38 System usage
pankso@54 39 ------------
pankso@54 40 `df -h`
pankso@54 41
pankso@54 42 `free`
pankso@54 43
pankso@54 44 EOF
pankso@54 45 ;;
pankso@54 46 chroot|-c)
pankso@54 47 # Move a user into a new chroot location
pankso@54 48 if [ -s $2/bin/sh ] && grep -qs $3: /etc/password ; then
pankso@54 49 grep -q ^chroot /etc/busybox.conf ||
pankso@54 50 echo 'chroot = ssx root.root' >> /etc/busybox.conf
pankso@54 51 [ -s /bin/chrootsh ] || cat > /bin/chrootsh << EOF
pankso@54 52 #!/bin/sh
pankso@54 53
pankso@54 54 #case " \$@ " in
pankso@54 55 #*rsync*) exec /bin/sh "\$@" ;;
pankso@54 56 #esac
pankso@54 57
pankso@54 58 case "\$USER" in
pankso@54 59 pankso) exec /bin/sh "\$@" ;;
pankso@54 60 *) exec /usr/sbin/chroot $2 /bin/chrootsh "\$@" ;;
pankso@54 61 esac
pankso@54 62 EOF
pankso@54 63 [ -s $2/bin/chrootsh ] || cat > $2/bin/chrootsh << EOF
pankso@54 64 #!/bin/sh
pankso@54 65
pankso@54 66 export SHELL='/bin/sh'
pankso@54 67 cd \$HOME
pankso@54 68 . /etc/profile
pankso@54 69 exec /bin/sh "\$@"
pankso@54 70 EOF
pankso@54 71 chmod +x /bin/chrootsh $2/bin/chrootsh
pankso@54 72 base=$(awk -F: "/^$3:/ { print \$6 }" /etc/passwd)
pankso@54 73 target=$base
pankso@54 74 while [ -L $target ]; do
pankso@54 75 target=$(readlink $target)
pankso@54 76 done
pankso@54 77 mv $target $2/$base
pankso@54 78 [ -L $base ] && rm -f $base
pankso@54 79 ln -s $2/$base $base
pankso@54 80 if ! grep -q ^$3: $2/etc/passwd ; then
pankso@54 81 grep ^$3: /etc/passwd >> $2/etc/passwd
pankso@54 82 grep ^$3: /etc/shadow >> $2/etc/shadow fi
pankso@54 83 fi
pankso@54 84 else
pankso@54 85 cat << EOF
pankso@54 86 Usage: $0 $1 newchroot user
pankso@54 87 Move a user in a new chroot location
pankso@54 88 EOF
pankso@54 89 fi
pankso@54 90 ;;
pankso@54 91 backup|-b)
pankso@54 92 # Backup config files and SQL db.
pankso@54 93 echo "Not yet implemented..." ;;
pankso@54 94 up-www|-uw)
pankso@54 95 # Update website from repo.
pankso@54 96 echo -e "\nUpdating: www.slitaz.org..."
pankso@54 97 cd $WEBSITE && hg pull && hg update
pankso@54 98 echo "" ;;
pankso@54 99 up-tank|-ut)
pankso@54 100 # Update Tank web interface: http://tank.slitaz.org/
pankso@54 101 echo -e "\nUpdating: tank.slitaz.org..."
pankso@54 102 cd $REPOS/slitaz-forge
pankso@54 103 hg update
pankso@54 104 rm -rf $VHOST/*.* $VHOST/pics/website $VHOST/images
pankso@54 105 cp -a tank/web/* $VHOST
pankso@54 106 echo "" ;;
pankso@54 107 up-people|-up)
pankso@54 108 # Update People web interface: http://people.slitaz.org/
pankso@54 109 echo -e "\nUpdating: people.slitaz.org..."
pankso@54 110 cd $REPOS/slitaz-forge
pankso@54 111 hg update
pankso@54 112 rm -rf $WWW/people/*
pankso@54 113 cp -a people/* $WWW/people
pankso@54 114 echo "" ;;
pankso@54 115 up-boot|-ub)
pankso@54 116 # Update Web Boot interface: http://boot.slitaz.org/
pankso@54 117 echo -e "\nUpdating: boot.slitaz.org..."
pankso@54 118 cd $REPOS/slitaz-forge
pankso@54 119 hg update
pankso@54 120 rm -rf $WWW/boot/*
pankso@54 121 cp -a boot/* $WWW/boot
pankso@54 122 echo "" ;;
pankso@54 123 up-stats|-us)
pankso@54 124 echo -e "\nUpdating all awstats databases..."
pankso@54 125 for vh in www boot pkgs
pankso@54 126 do
pankso@54 127 /var/www/cgi-bin/awstats.pl -config=$vh.slitaz.org
pankso@54 128 done
pankso@54 129 echo "" ;;
pankso@54 130 adduser|-au)
pankso@54 131 # On Tank /etc/skel is empty to let taktank handle default user
pankso@54 132 # files.
pankso@54 133 echo ""
pankso@54 134 if [ -n "$2" ]; then
pankso@54 135 user=$2
pankso@54 136 else
pankso@54 137 echo -n "User name: " && read user
pankso@54 138 fi
pankso@54 139 if [ -d /home/$user ]; then
pankso@54 140 echo -e "User $user already exists...\n" && exit 1
pankso@54 141 fi
pankso@54 142 echo "Adding user: $user"
pankso@54 143 #adduser -s /bin/sh -g "SliTaz User" -G users -h /home/$user $user # for cooking
pankso@54 144 adduser $user
pankso@54 145 # HG access
pankso@54 146 echo -n "Hg password: " && read passwd
pankso@54 147 echo "$user:$passwd" >> /etc/lighttpd/plain.passwd
pankso@54 148 # Public dir at http://people.slitaz.org/~$user/
pankso@54 149 cp -a /usr/share/tank/Public /home/$user/Public
pankso@54 150 # README and empty Shell profile
pankso@54 151 cp -a /usr/share/tank/README /home/$user/
pankso@54 152 cat > /home/$user/.profile << EOF
pankso@54 153 # ~/.profile: Executed by Bourne-compatible login SHells.
pankso@54 154 #
pankso@54 155 EOF
pankso@54 156 chown -R $user.$user /home/$user
pankso@54 157 echo -e "Done\n" ;;
pankso@54 158 *)
pankso@54 159 usage ;;
pankso@54 160 esac
pankso@54 161 exit 0