summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2016-07-11 23:22:53 +0200
committerErich Eckner <git@eckner.net>2016-07-11 23:22:53 +0200
commit56b0630251c5730ed3f03ac9d187d1ced7c1f6fe (patch)
tree68c4d492c594130dec6414ae357df20b76792eba
downloadupdate-all-56b0630251c5730ed3f03ac9d187d1ced7c1f6fe.tar.xz
initial Commitv0.0
-rw-r--r--.gitignore1
-rw-r--r--Makefile49
-rw-r--r--update-all.conf16
-rw-r--r--update-all.in26
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