From cc511e9ebe81aa37f73b4fef4ea4b8c967681215 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 15 Feb 2012 14:43:39 +0100 Subject: [PATCH] add migration tools --- {various => deegger}/deegger.py | 0 {various => deegger}/deegger_url.py | 0 server-migration/migrate-apache | 15 +++++++++++ server-migration/migrate-example | 3 +++ server-migration/migrate-home | 13 +++++++++ server-migration/migrate-logs | 13 +++++++++ server-migration/migrate-passwd | 17 ++++++++++++ server-migration/migrate-shadow | 26 ++++++++++++++++++ server-migration/migrate.py | 41 +++++++++++++++++++++++++++++ various/clean_user.sh | 2 +- 10 files changed, 129 insertions(+), 1 deletion(-) rename {various => deegger}/deegger.py (100%) rename {various => deegger}/deegger_url.py (100%) create mode 100755 server-migration/migrate-apache create mode 100755 server-migration/migrate-example create mode 100755 server-migration/migrate-home create mode 100755 server-migration/migrate-logs create mode 100755 server-migration/migrate-passwd create mode 100755 server-migration/migrate-shadow create mode 100755 server-migration/migrate.py diff --git a/various/deegger.py b/deegger/deegger.py similarity index 100% rename from various/deegger.py rename to deegger/deegger.py diff --git a/various/deegger_url.py b/deegger/deegger_url.py similarity index 100% rename from various/deegger_url.py rename to deegger/deegger_url.py diff --git a/server-migration/migrate-apache b/server-migration/migrate-apache new file mode 100755 index 0000000..008e4c6 --- /dev/null +++ b/server-migration/migrate-apache @@ -0,0 +1,15 @@ +#!/usr/bin/python + +import os, sys + +dir_old = '/home/pbackup/pypix/etc/apache2/sites-available/' +dir_new = '/etc/apache2/sites-available/' +items_old = os.listdir(dir_old) +items_new = os.listdir(dir_new) + +for item in items_old: + if item in items_new: + command = 'sudo diff ' + args = dir_old+item+' '+dir_new+item + print command+args + os.system(command+args) diff --git a/server-migration/migrate-example b/server-migration/migrate-example new file mode 100755 index 0000000..634af64 --- /dev/null +++ b/server-migration/migrate-example @@ -0,0 +1,3 @@ +# migrate-shadow my-redhat-shadow-useronly-list > shadow-filter.awk + +# awk -f shadow-filter.awk /etc/shadow > my-new-shadow-file-with-updated-pass \ No newline at end of file diff --git a/server-migration/migrate-home b/server-migration/migrate-home new file mode 100755 index 0000000..d4b1ea2 --- /dev/null +++ b/server-migration/migrate-home @@ -0,0 +1,13 @@ +#!/usr/bin/python + +import os, sys + +home_old = '/home/pbackup/pypix/home/' +home_new = '/home/' +homes = os.listdir(home_old) + +for home in homes: + if not home == 'momo': + command = 'sudo cp -ra '+home_old+home+' '+home_new + print command + os.system(command) diff --git a/server-migration/migrate-logs b/server-migration/migrate-logs new file mode 100755 index 0000000..d4b1ea2 --- /dev/null +++ b/server-migration/migrate-logs @@ -0,0 +1,13 @@ +#!/usr/bin/python + +import os, sys + +home_old = '/home/pbackup/pypix/home/' +home_new = '/home/' +homes = os.listdir(home_old) + +for home in homes: + if not home == 'momo': + command = 'sudo cp -ra '+home_old+home+' '+home_new + print command + os.system(command) diff --git a/server-migration/migrate-passwd b/server-migration/migrate-passwd new file mode 100755 index 0000000..c7f5168 --- /dev/null +++ b/server-migration/migrate-passwd @@ -0,0 +1,17 @@ +#!/bin/bash +# +# usage: migrate-passwd password-file> +# +# remarks: the password file must be a copy of passwd that contains +# only the entries to be migrated. +# + +[ -f $1 ] || exit 1 + +userlist=$(cat $1) + +for entry in $userlist ; do + username=$(echo $entry | cut -d ':' -f 1) + gecos=$(echo $entry | cut -d ':' -f 5) + adduser --force-badname --disabled-password --gecos "$gecos" "$username" > /dev/null +done diff --git a/server-migration/migrate-shadow b/server-migration/migrate-shadow new file mode 100755 index 0000000..e7b0409 --- /dev/null +++ b/server-migration/migrate-shadow @@ -0,0 +1,26 @@ +#!/bin/bash +# +# usage: migrate-shadow shadow-like-file> +# +# remarks: the shadow password file must be a copy of passwd that contains +# only the entries to be migrated. +# + +[ -f $1 ] || exit 1 + +userlist=$(cat $1) +elsebranch= + +echo -e "BEGIN { FS=\":\" }\n{" + +for entry in $userlist ; do + username=$(echo $entry | cut -d ':' -f 1) + encpassword=$(echo $entry | cut -d ':' -f 2) + echo "${elsebranch}if ( \$0 ~ /^$username:/ ) \ + printf \"%s:%s:%s:%s:%s:%s:%s:%s:%s\n\",\$1, \ + \"$encpassword\", \$3,\$4,\$5,\$6,\$7,\$8,\$9;" + elsebranch="else " +done + +echo "else print \$0;" +echo -e "}\nEND {}" \ No newline at end of file diff --git a/server-migration/migrate.py b/server-migration/migrate.py new file mode 100755 index 0000000..819b2ef --- /dev/null +++ b/server-migration/migrate.py @@ -0,0 +1,41 @@ +#!/usr/bin/python + +import os + + +class Migration(object): + + def __init__(self, name, app, args=None): + self.name = name + self.app = app + self.args = args + + def command(self): + return self.app + ' ' + self.args + + def run(self): + os.system(self.command) + + +class Migrator(object): + + def __init__(self, in_host, out_host): + self.migrations = [] + self.in_host = in_host + self.out_host = out_host + + def add(self, migration): + self.migrations.append(migration['name'], migration['app'], migration['args']) + + def run(self): + for migration in self.migrations: + migration.run() + + + +migrations = [ + {'app': 'rsync', 'args': '-aA /etc/ momo@angus.parisson.com:/home/momo/backups/ns206309/etc/'}, + {'app': 'rsync', 'args': '-aA /home/momo/backups/mysql/daily/ momo@angus:~/backups/ns206309/mysql/'}, + + ] + \ No newline at end of file diff --git a/various/clean_user.sh b/various/clean_user.sh index 1bb8948..12febe5 100755 --- a/various/clean_user.sh +++ b/various/clean_user.sh @@ -1,4 +1,4 @@ -#!bin/sh +#!/bin/sh u=$1 sudo deluser $u -- 2.39.5