fcp (ftp copy) - copia um ou mais arquivos via FTP
Publicado por Pedro Robson Leão 23/09/2004
[ Hits: 13.334 ]
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
Cria relatorio de email enviados e recebidos
Agenda de Contatos - Shell Script + MYSQL
Veja os 10 últimos tópicos das comunidades
Baixar flatpak para um arquivo local
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (4)
Bash ao invés de Fish no CachyOS (1)
Linux rodando do hd externo ou ssd? (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta