123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/bin/sh
- who=$(id -u)
- if [ $who -ne 0 ]; then
- echo 'Exit. System update must be run as root.'
- exit 1
- fi
- if [ -x /sbin/mtd ];then
- updatecmd="mtd -r write - linux"
- else
- updatecmd="gunzip -c | tar -xf -"
- fi
- check_exit() {
- if [ $? -ne 0 ];then
- echo "Update failed."
- exit 1
- fi
- }
- prepare() {
- cd /
- umount -f /etc
- mount -o remount,rw /
- }
- extract_from_file() {
- prepare
- cat $1 | eval $updatecmd
- check_exit
- }
- extract_from_ssh() {
- prepare
- ssh $1 "cat $2" | eval $updatecmd
- check_exit
- }
- extract_from_http() {
- prepare
- wget -O - $1 | eval $updatecmd
- check_exit
- }
-
- case $1 in
- file://*|/*)
- url=$(echo $1|sed -e "s#file://##")
- echo "Updating system from $1"
- extract_from_file $url
- ;;
- ssh://*)
- host=$(echo $1|sed -e "s#ssh://\(.*\):.*#\1#")
- file=$(echo $1|sed -e "s#ssh://.*:\(.*\)#\1#")
- echo "Updating system from $1"
- extract_from_ssh $host $file
- ;;
- http://*|ftp://*)
- echo "Updating system from $1"
- extract_from_http $1
- ;;
- *)
- echo "No or wrong uri given. exit."
- echo "Use one of the following uri:"
- echo "http://myserver/myupdate.tar.gz"
- echo "ssh://myuser@myserver:/my/path/myupdate.tar.gz"
- echo "file:///mypath/myupdate.tar.gz"
- exit 1
- ;;
- esac
- sync
- mount -o bind /etc /tmp/.cfgfs/root
- echo "Update sucessful. You should reboot now."
|