slitaz-tools annotate boxes/scp-box @ rev 818

Improved po/slitaz-tools/fr.po
author Christophe Lincoln <pankso@slitaz.org>
date Thu Jan 02 19:11:16 2014 +0100 (2014-01-02)
parents 75e873df3022
children c79e656b37a5
rev   line source
pankso@759 1 #!/bin/sh
pankso@759 2 #
pankso@759 3 # SCP Box - Small front end to the secure file copy utility.
pankso@759 4 #
al@813 5 # Copyright (C) 2008-2013 SliTaz GNU/Linux - BSD License
pankso@759 6 #
pankso@759 7 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@759 8 #
pankso@759 9 . /lib/libtaz.sh
al@813 10 export TEXTDOMAIN='slitaz-boxes' # i18n
pankso@759 11
pankso@759 12 [ "$file" ] || file="$HOME"
pankso@759 13 [ "$dir" ] || dir="$HOME"
pankso@759 14
pankso@759 15 # Internal variables (we need a space before options).
pankso@759 16 config=$HOME/.config/scpbox
al@813 17 term="terminal -geometry 80x16"
pankso@759 18 scpopts=" -r -P 22"
pankso@759 19
paul@763 20 # Make sure we have config files.
pankso@759 21 if [ ! -d "$config" ] || [ -f "$config/hosts" ]; then
pankso@759 22 mkdir -p $config
pankso@759 23 touch $config/hosts && chmod 0600 $config/hosts
pankso@759 24 fi
pankso@759 25
pankso@759 26 #
pankso@759 27 # Functions
pankso@759 28 #
pankso@759 29
pankso@759 30 # Help and usage
pankso@759 31 usage() {
pankso@759 32 cat << EOT
pankso@759 33
al@813 34 $(_ 'SCP Box - Small front end to the secure file copy utility.')
pankso@759 35
al@813 36 $(boldify "$(_ 'Usage:')")
al@813 37 $(basename $0) [$(_n 'command')|$(_n 'option')]
pankso@759 38
al@813 39 $(boldify "$(_ 'Commands:')")
al@813 40 list-hosts $(_n 'List all known hosts')
pankso@759 41
al@813 42 $(boldify "$(_ 'Options:')")
al@813 43 --file=$(_n '/path/to/file')
al@813 44 --dir=$(_n '/path/to/directory')
al@813 45
al@813 46 $(boldify "$(_ 'Examples:')")
al@813 47 $(basename $0) --file=$(_n '/path/to/file')
pankso@759 48
pankso@759 49 EOT
pankso@759 50 }
pankso@759 51
pankso@759 52 # List last used hosts.
pankso@759 53 list_hosts() {
al@813 54 for h in $(cat $config/hosts); do
pankso@759 55 echo -n "!$h"
pankso@759 56 done
pankso@759 57 }
pankso@759 58
pankso@759 59 # Main GUI box function with pure Yad spec
pankso@759 60 scpbox_main() {
al@813 61 icon=folder-remote
al@813 62 yad --title="$(_n 'SCP Box')" --window-icon=$icon \
al@813 63 --width=400 \
al@813 64 --image=$icon --image-on-top \
al@813 65 --text="$(_n '<b>Secure copy</b> - Copy files remotely with scp')" \
al@813 66 --form \
al@813 67 --field="$(_n 'User name:')" "$USER" \
al@813 68 --field="$(_n 'Hostname:')" "" \
al@813 69 --field="$(_n 'Known hosts:'):CB" "$(list_hosts)" \
al@813 70 --field="$(_n 'Options:')" "$scpopts" \
al@813 71 --field="$(_n 'Local file:'):FL" "$file" \
al@813 72 --field="$(_n 'Local directory:'):DIR" "$dir" \
al@813 73 --field="$(_n 'Remote path:')" "" \
al@813 74 --button="$(_n 'Download'):2" \
al@813 75 --button="$(_n 'Upload'):0" \
al@813 76 --button="gtk-close:1"
pankso@759 77 }
pankso@759 78
pankso@759 79 # Main function
pankso@759 80 scpbox() {
pankso@759 81 # Store box results
pankso@759 82 main=$(scpbox_main)
pankso@759 83 ret=$?
pankso@759 84 [ "$debug" ] && echo "DEBUG: main=$main"
pankso@759 85
pankso@759 86 user=$(echo $main | cut -d "|" -f 1)
pankso@759 87 hostname=$(echo $main | cut -d "|" -f 2)
pankso@759 88 options=$(echo $main | cut -d "|" -f 4)
pankso@759 89 remote=$(echo $main | cut -d "|" -f 7)
pankso@759 90
pankso@759 91 # Use and store new hostname.
pankso@759 92 if [ "$hostname" ]; then
pankso@759 93 echo "$hostname" >> $config/hosts
pankso@759 94 host="$hostname"
pankso@759 95 else
pankso@759 96 host=$(echo $main | cut -d "|" -f 3)
pankso@759 97 fi
pankso@759 98 if [ "$host" == "(null)" ] || [ ! "$host" ]; then
al@813 99 echo "No host, exit"; exit 0
pankso@759 100 fi
pankso@759 101
pankso@759 102 # Deal with --button values
pankso@759 103 case $ret in
pankso@759 104 0)
pankso@759 105 # Upload: do we have a single file or a directory (skip $HOME)
pankso@759 106 file=$(echo $main | cut -d "|" -f 5)
pankso@759 107 dir=$(echo $main | cut -d "|" -f 6)
pankso@759 108 if [ -f "$file" ]; then
pankso@759 109 local="$file"
pankso@759 110 elif [ "$dir" != "$HOME" ]; then
pankso@759 111 local="$dir"
pankso@759 112 else
al@813 113 echo "No file, exit"; exit 0
pankso@759 114 fi
pankso@759 115 cmd="scp $options $local $user@$host:$remote"
pankso@759 116 [ "$debug" ] && echo "DEBUG: $cmd"
pankso@759 117 $term -e "$cmd" ;;
pankso@759 118 2)
paul@763 119 # Download: we need a remote file.
pankso@759 120 local=$(echo $main | cut -d "|" -f 6)
pankso@759 121 if [ ! "$remote" ]; then
al@813 122 echo "No remote file, exit"; exit 0
pankso@759 123 fi
pankso@759 124 cmd="scp $options $user@$host:$remote $local"
pankso@759 125 [ "$debug" ] && echo "DEBUG: $cmd"
pankso@759 126 $term -e "$cmd" ;;
pankso@759 127 *)
pankso@759 128 exit 0 ;;
pankso@759 129 esac
pankso@759 130 }
pankso@759 131
pankso@759 132 #
pankso@759 133 # Commands
pankso@759 134 #
pankso@759 135
pankso@759 136 case "$1" in
al@813 137 -h|--help) usage ;;
al@813 138 list-hosts) list_hosts ;;
al@813 139 ""|--*) scpbox ;;
al@813 140 *) usage ;;
pankso@759 141 esac
pankso@759 142
pankso@759 143 exit 0