summaryrefslogtreecommitdiff
path: root/etc/functions/put
diff options
context:
space:
mode:
authorDaniel Friesel <derf@derf.homelinux.org>2008-09-18 15:38:27 +0200
committerDaniel Friesel <derf@derf.homelinux.org>2008-09-18 15:38:27 +0200
commit188134c9c5e7e3557bb4f1ce5dc77e77b9947749 (patch)
tree695934c01ec9b67449de2918b9e8bb27f3c3dc21 /etc/functions/put
parente7819c83a692c8290cbea43252710cf2d1c39b25 (diff)
Added put function
Diffstat (limited to 'etc/functions/put')
-rw-r--r--etc/functions/put42
1 files changed, 42 insertions, 0 deletions
diff --git a/etc/functions/put b/etc/functions/put
new file mode 100644
index 0000000..70a3ec9
--- /dev/null
+++ b/etc/functions/put
@@ -0,0 +1,42 @@
+## vim:ft=zsh
+
+autoload fdie
+typeset hostname
+typeset -a ssh_options hosts
+typeset target_dir server_prefix
+typeset file
+
+function put_aneurysm () {
+ hostname='derf.homelinux.org'
+ ssh_options=(-q)
+ target_dir='public_html/tmp/'
+ server_prefix='https://derf.homelinux.org/~derf/tmp/'
+}
+
+function put_sievert () {
+ hostname='sievert.tabularazor.org'
+ ssh_options=(-q)
+ target_dir='www/tmp/'
+ server_prefix='https://tabularazor.org/~derf/tmp/'
+}
+
+hosts=(aneurysm sievert)
+
+if [[ -f $1 ]] {
+ file=${1:t}
+ while (( $#hosts )) {
+ put_$hosts[1]
+ ping -c 1 $hostname &> /dev/null
+ if (( ? == 0 )) {
+ scp $ssh_options $file $hostname:$target_dir
+ ssh $ssh_options $hostname "chmod 644 $target_dir$file"
+ echo $server_prefix$file
+ return 0
+ } else {
+ shift hosts
+ }
+ }
+ fdie "No hosts reachable"
+} else {
+ fdie "$1: No such file"
+}