fcp (ftp copy) - copia um ou mais arquivos via FTP
Publicado por Pedro Robson Leão 23/09/2004
[ Hits: 13.561 ]
O script efetua copia de arquivos entre maquinas da rede similar ao comando rcp e/ou scp, o diferencial eh que o script utiliza o protocolo ftp para realizar esta copia.
O parametros de uso são similares ao do scp.
#!/usr/bin/bash
user=;
pass=;
server=;
dst=;
dst_name=;
debug=;
function _ftp() {
host=${1};
user=${2};
pass=${3};
method=${4};
src_dir=${5};
src_fil=${6};
dst_dir=${7};
dst_fil=${8};
if [ ${method} == "put" ] ; then
LCD=${src_dir};
SRC=${dst_fil}
CD=${dst_dir};
else
LCD=${dst_dir};
SRC=${src_fil}
CD=${src_dir};
fi
printf "%s %s - Remote directory now %s " $host $src_fil ${CD};
dbg=;
[ ! -z ${debug} ] && dbg="d";
ftp -${dbg}ni ${host} <<EOF
user ${user} ${pass}
lcd ${LCD}
cd ${CD}
${method} ${SRC}
by
EOF
}
function isUrl() {
echo ${1} | grep : >/dev/null
return ${?};
}
function parseUser() {
if echo ${1} | grep \@ >/dev/null ; then
echo ${1/\@*/};
fi
}
function parseServer() {
var=${1/*\@/};
echo ${var/:*/};
}
function parseDir() {
echo ${1/*:/};
}
function usage() {
printf "Usage: %s [-d] files [[user]@server]:[dir] \n" $0
exit 2;
}
[ $# == 0 ] && usage $0;
while getopts hd name ; do
case $name in
d) debug=1;;
*) usage $0;;
esac
done
shift $(($OPTIND -1));
i=1;
declare -a src;
for file in ${*} ; do
if [ ${i} -eq ${#} ] ; then
dst=${file};
else
src[${i}]=${file};
i=$((i+1));
fi
done
if isUrl ${dst} ; then
user=$( parseUser ${dst} );
server=$( parseServer ${dst} );
dst=$( parseDir ${dst} );
if [ ! -d ${dst} ] ; then
dst=$( dirname ${dst} );
dst_name=$( basename ${dst} );
fi
[ -z "${user}" ] && user=${LOGNAME};
if [ -z "${pass}" ] ; then
printf "%s@%s's password: " $user $server;
read pass;
fi
fi
method="put";
for ((i=1; i<${#}; i++)) ; do
if isUrl ${src[$((i))]} ; then
user=$( parseUser ${src[$((i))]} );
server=$( parseServer ${src[$((i))]} );
src[$((i))]=$( parseDir ${src[$((i))]} );
method="get";
[ -z "${user}" ] && user=${LOGNAME};
if [ -z "${pass}" ] ; then
printf "%s@%s's password: " $user $server;
read pass;
fi
fi
for file in ${src[$((i))]} ; do
#set -x
_ftp ${server} ${user} ${pass} ${method} $( dirname ${file} ) $( basename ${file} ) ${dst} ${dst_name};
#set +x
done
done
Baixar pdf do "slide share" sem login usando shell script
Autenticação automática no Speedy Home
Bashblog v1.0 0 - cria um microblog em HTML5
Dicionário e tradutor baseado no Michaelis
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









