scp shell脚本,shell脚本模板
#!/bin/bash
set -e
usage()
{
cat <<EOF
Usage: $(basename $0) [OPTIONs]
Package all file in SOURCE directory and send to remote DESTINATION.
The default value of DESTINATION and SOURCE directory can be set in
this script by variable 'dstdir' and 'srcdir'.
-h show this help information.
-d remote DESTINATION like 'cjl-target@10.0.110.193:/home/cjl-target/zynq/yocto_images'.
-s SOURCE directory. Default '.'.
-n archived file's name. Default 'allfiles.tar.gz'.
-f copy a file or a directory specified by SOURCE to DESTINATION.
EOF
}
ARGV=$(getopt -n $(basename $0) -o hd:s:n:f -l help,destination:,source:,name:,file -- "$@")
echo "[DEBUG] all options and value:$ARGV"
eval set -- "$ARGV"
# default value
dstdir="cjl-target@10.0.110.193:/home/cjl-target/zynq/yocto_images"
srcdir=.
tarname=allfiles.tar.gz
# internal variables
doarchive=yes
# src type: d--directory f--normal file n--not exist
srctype=n
while true
do
case "$1" in
-h|--help)
usage
exit 0
;;
-d|--destination)
dstdir=$2
shift 2
;;
-s|--source)
srcdir=$2
shift 2
;;
-n|--name)
tarnamexi=$2
shift 2
;;
-f|--file)
doarchive=no
shift
;;
--)
break
;;
*)
echo "[ERROR] unknown option $1" 1>&2
usage 1>&2
exit 22
esac
done
# $srcdir is not exist.
if ! test -e $srcdir
then
echo "[ERROR] file or directory not found" 1>&2
exit 2
elif test -f $srcdir
then
srctype=f
elif test -d $srcdir
then
srctype=d
fi
if test $srctype != d && test $doarchive = yes
then
echo "[ERROR] $srcdir is not a directory" 1>&2
exit 20
fi
echo "-----------------------------------------"
echo "[INFO] source dir :$srcdir"
echo "[INFO] source type:$srctype"
echo "[INFO] destination:$dstdir"
echo "[INFO] doarchive :$doarchive"
echo "[INFO] archivename:$tarname"
echo "-----------------------------------------"
# determine whether tar or not.
if test $doarchive = yes
then
echo "[CMD] tar cfz $tarname $srcdir/*"
#tar cfz $tarname $srcdir/*
echo "[CMD] scp $tarname $dstdir"
#scp $tarname $dstdir
else
if test $srctype = d
then
echo "[CMD] scp -r $srcdir $dstdir"
#scp -r $srcdir $dstdir
elif test $srctype = f
then
echo "[CMD] scp $srcdir $dstdir"
#scp $srcdir $dstdir
else
echo "[ERROR] unexpect error" 1>&2
exit 22
fi
fi