Browse Source

Initial automated ssh upload work. Requires expect.

Eeems 10 years ago
parent
commit
27c05dcae5
6 changed files with 62 additions and 28 deletions
  1. 1 1
      bin/package-add
  2. 1 0
      bin/repo-build
  3. 33 0
      bin/repo-update
  4. 1 1
      bin/site-add
  5. 13 13
      etc/packages.conf
  6. 13 13
      etc/sites.conf

+ 1 - 1
bin/package-add

@@ -28,7 +28,7 @@ if [[ "$1" != "" ]];then
 	esac;
 	file=`dirname $BASH_SOURCE`/../etc/packages.d/$1;
 	touch $file;
-	echo "packages+=([name]=\"$1\" [type]=\"$btype\" [script]=\"$script\")" > $file;
+	echo "packages+=(\"[name]='$1' [type]='$btype' [script]='$script'\")" > $file;
 	echo "Created project $1";
 else
 	echo "Usage: $0 <package> [<sourcedir>]";

+ 1 - 0
bin/repo-build

@@ -0,0 +1 @@
+#!/bin/bash

+ 33 - 0
bin/repo-update

@@ -0,0 +1,33 @@
+#!/bin/bash
+root="$(dirname $BASH_SOURCE)/..";
+. $root/etc/sites.conf
+for val in "${sites[@]}"; do
+	unset site;
+	declare -A site;
+	eval "site=($val)";
+	host=${site[host]};
+	user=${site[username]};
+	echo "Updating $user@$host";
+	case ${site[type]} in
+		ssh)
+			echo -e "\tUploading files";
+			expect -c "
+				set timeout 1
+				log_user 0
+				spawn scp -r $root/skel $user@$host:${site[root]}
+					expect yes/no { send yes\r ; exp_continue }
+					expect password: {
+						send $(echo ${site[password]} | base64 --decode | gpg -d -q --no-mdc-warning)\r 
+						log_user 1
+						set timeout -1
+					}
+					expect eof {
+						exit
+					}
+				}";
+			echo -e "\tDone uploading"
+		;;
+		*)
+			echo -e "\tType '${site[type]}' not implemented.";
+	esac;
+done;

+ 1 - 1
bin/site-add

@@ -23,7 +23,7 @@ if [[ "$1" != "" ]] && [[ "$2" != "" ]]; then
 	read -s -p "Password:" pass;
 	file=`dirname $BASH_SOURCE`/../etc/sites.d/$1@$2;
 	touch $file;
-	echo "sites+=([username]=\"$1\" [host]=\"$2\" [password]=\"$(echo $pass | gpg -c | base64)\" [root]=\"$root\" [type]=\"$stype\")" > $file;
+	echo "sites+=(\"[username]='$1' [host]='$2' [password]='$(echo $pass | gpg -c | base64)' [root]='$root' [type]='$stype'\")" > $file;
 	echo -e "Site $1@$2 created";
 else
 	echo "Usage: $0 <username> <hostname> [<root directory>]"

+ 13 - 13
etc/packages.conf

@@ -1,13 +1,13 @@
-############################################################################################
-#                                                                                          #
-#                           Package declaration                                            #
-#                                                                                          #
-############################################################################################
-packages=()
-for f in `dirname $BASH_SOURCE`/packages.d/*; do source $f; done
-############################################################################################
-#                                                                                          #
-#                   To Add a new package:                                                  #
-# packages+=([name]="name" [type]="script|git|svn" [script]="update script if applicable") #
-#                                                                                          #
-############################################################################################
+##############################################################################################
+#                                                                                            #
+#                             Package declaration                                            #
+#                                                                                            #
+##############################################################################################
+packages=();
+for f in `dirname $BASH_SOURCE`/packages.d/*; do source $f; done;
+##############################################################################################
+#                                                                                            #
+#                       To Add a new package:                                                #
+# packages+=("[name]='name' [type]='script|git|svn' [script]='update script if applicable'") #
+#                                                                                            #
+##############################################################################################

+ 13 - 13
etc/sites.conf

@@ -1,13 +1,13 @@
-##########################################################################################################################
-#                                                                                                                        #
-#                                        Site declaration                                                                #
-#                                                                                                                        #
-##########################################################################################################################
-sites=()
-for f in `dirname $BASH_SOURCE`/sites.d/*; do source $f; done
-##########################################################################################################################
-#                                                                                                                        #
-#                                       To Add a new site:                                                               #
-# sites+=([username]="username" [password]="password" [host]="hostname" [type]="ssh|ftp|rsync" [root]="root directory")  #
-#                                                                                                                        #
-##########################################################################################################################
+###########################################################################################################################
+#                                                                                                                         #
+#                                                   Site declaration                                                      #
+#                                                                                                                         #
+###########################################################################################################################
+sites=();
+for f in `dirname $BASH_SOURCE`/sites.d/*; do source $f; done;
+###########################################################################################################################
+#                                                                                                                         #
+#                                                  To Add a new site:                                                     #
+# sites+=("[username]='username' [password]='password' [host]='hostname' [type]='ssh|ftp|rsync' [root]='root directory'") #
+#                                                                                                                         #
+###########################################################################################################################