diff options
author | Daniel Friesel <derf@derf.homelinux.org> | 2010-07-05 11:25:29 +0200 |
---|---|---|
committer | Daniel Friesel <derf@derf.homelinux.org> | 2010-07-05 11:25:29 +0200 |
commit | d468d0bf4815b32c84fad26b58a386158ae6fab4 (patch) | |
tree | a661bedc4a2bf9f6bf20ecc690ac006d3ed74e6b /etc/functions | |
parent | 1133371f521bd482d1bb1ae89b97060d8a06bb02 (diff) |
put: Filesize limitations for certain hosts
Diffstat (limited to 'etc/functions')
-rw-r--r-- | etc/functions/put | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/etc/functions/put b/etc/functions/put index 63f21aa..c178497 100644 --- a/etc/functions/put +++ b/etc/functions/put @@ -5,11 +5,12 @@ ## Copyright (C) 2008, 2009 by Daniel Friesel <derf@derf.homelinux.org> ## License: WTFPL <http://sam.zoy.org/wtfpl> -typeset hostname +typeset hostname ssh_name typeset -a hosts -typeset target_dir server_prefix +typeset target_dir server_prefix max_size typeset file remote_file illegal -typeset -i n_hosts n_ping n_curl + +zmodload zsh/stat if [[ -z ${commands[curl]} ]]; then function curl {return 0} @@ -21,6 +22,7 @@ function put_aneurysm { ssh_name='aneurysm' target_dir='public_html/tmp/' server_prefix='http://derf.homelinux.org/tmp/' + max_size=2000000 } function put_chaosdorf { @@ -28,6 +30,7 @@ function put_chaosdorf { ssh_name='chaosdorf-web' target_dir='public_html/tmp/' server_prefix='http://www.chaosdorf.de/~derf/tmp/' + max_size=0 } hosts=(aneurysm chaosdorf) @@ -47,7 +50,6 @@ if [[ ! -f ${1} ]] { return 1 } -n_hosts=${#hosts} file=${1} while (( ${#hosts} )) { @@ -55,6 +57,12 @@ while (( ${#hosts} )) { put_${hosts[1]} ping -c 1 ${hostname} &> /dev/null || ping6 -c 1 ${hostname} &> /dev/null if (( ? == 0 )) { + + if (( max_size > 0 && $(zstat +size ${file}) > max_size )) { + shift hosts + continue + } + if [[ ${remote_file} == ${~illegal} ]] { remote_file=${remote_file:r} } @@ -63,15 +71,8 @@ while (( ${#hosts} )) { if $(curl -fI ${server_prefix}${remote_file} &> /dev/null); then echo ${server_prefix}${remote_file} return 0 - else - (( n_curl++ )) fi - } else { - (( n_ping++ )) } shift hosts } -echo "Tried uploading to ${n_hosts} hosts without success" >&2 -((n_ping)) && echo " - ${n_ping} hosts are unreachable" >&2 -((n_curl)) && echo " - ${n_curl} errors while uploading" >&2 return 1 |