12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/bin/sh
- who=$(id -u)
- if [ $who -ne 0 ]; then
- echo 'Exit. System update must be run as root.'
- exit 1
- 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 | gunzip -c | tar -xf -
- check_exit
- }
- extract_from_ssh() {
- prepare
- ssh $1 "cat $2" | gunzip -c | tar -xf -
- check_exit
- }
- extract_from_http() {
- prepare
- wget -O - $1 | gunzip -c | tar -xf -
- 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."
|