diff options
author | Erich Eckner <git@eckner.net> | 2016-07-11 23:22:53 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2016-07-11 23:22:53 +0200 |
commit | 56b0630251c5730ed3f03ac9d187d1ced7c1f6fe (patch) | |
tree | 68c4d492c594130dec6414ae357df20b76792eba | |
download | update-all-56b0630251c5730ed3f03ac9d187d1ced7c1f6fe.tar.xz |
initial Commitv0.0
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 49 | ||||
-rw-r--r-- | update-all.conf | 16 | ||||
-rw-r--r-- | update-all.in | 26 |
4 files changed, 92 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..935e367 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +update-all diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d313e41 --- /dev/null +++ b/Makefile @@ -0,0 +1,49 @@ +# +# update-all - script to update many systems +# +# Copyright (c) 2016 Erich Eckner <opensource at eckner dot net> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# + +DESTDIR = +ETCDIR = /etc +BINDIR = /usr/bin + +VERSION = 0.0 + +all: update-all + +%: %.in + sed "s/#VERSION#/$(VERSION)/; s@#BINDIR#@$(BINDIR)@; s@#ETCDIR#@$(ETCDIR)@" $< > $@ + +.PHONY: install dist clean + +install: all + install -D -m0755 update-all $(DESTDIR)$(BINDIR)/update-all + install -D -m0644 update-all.conf $(DESTDIR)$(ETCDIR)/update-all.conf + +clean: + rm -f update-all + +dist: clean + git status --porcelain 2> /dev/null | grep -q "\S" && (git add .; git commit -m"neue Version: $(VERSION)") || true + ! git tag -d v$(VERSION) 2> /dev/null + git tag v$(VERSION) + git push + git push --tags + +# End of file diff --git a/update-all.conf b/update-all.conf new file mode 100644 index 0000000..4726023 --- /dev/null +++ b/update-all.conf @@ -0,0 +1,16 @@ +#!/bin/bash + +archSystems=( + musik + raspi + nlopc43 +) + +debianSystems=( + router +) + +cruxSystems=( + localhost + fileserver +) diff --git a/update-all.in b/update-all.in new file mode 100644 index 0000000..c672d8a --- /dev/null +++ b/update-all.in @@ -0,0 +1,26 @@ +#!/bin/bash + +declare -A updateCmd + +updateCmd["arch"]="pacman -Syu && pacdiff" +updateCmd["crux"]="ports -u && prt-get sysup && rejmerge" +updateCmd["debian"]="aptitude update && aptitude safe-upgrade && aptitude dist-upgrade" + +. #ETCDIR#/update-all.conf + +for systemTyp in "${!updateCmd[@]}" +do + eval "system=(\${${systemTyp}Systems[@]})" + for s in "${system[@]}" + do + if [ "$s" == "localhost" ] + then + conCmd="bash -c" + else + conCmd="ssh -t -t $s" + fi + echo "updating ${s} ..." + ${conCmd} "su -c \"${updateCmd["${systemTyp}"]}\"" + echo "... ${s} updated" + done +done |