NewtonJr.
(usa CentOS)
Enviado em 22/08/2007 - 12:05h
Olá amigos; Estou começando a migrar pra plataforma linux e peço ajuda de vcs nesse script pra rodar no servidor linux. Agradeço desde já a atenção de todos e aguardo suas respostas. t+
#!/bin/bash
# Cenário:
#
# Esse é um script que deverá executar o ftp de 04 arquivos de uma máquina linux para uma máquina windows todos os dias. Todos os arquivos estão no diretório /tmp/sage/arqs e no formato [mesdiaano-n.csv], onde mes é a sigla do mês, dia é o número do dia do ftp no formato xx (tem que ser em dois algarismos), e ano o ano do ftp no formato xx (somente os dois últimos números do ano); por fim n é um dos seguintes números 1,2,3 ou 4.
O script deverá identificar a data atual, definir a sigla do mes atual, o dia e o ano (ambos com dois numeros) e fazer o upload dos seguintes arquivos: mesdiaano-1.csv, mesdiaano-2.csv, mesdiaano-3.csv e mesdiaano-4.csv.
#
# Perguntas e Dúvidas
# Gostaria que vcs corrigem o código atual quanto a sintaxe. Fiz esse código em vb e algumas parte não sei converter para script shell. Tais partes estão sinalizadas com $#$.
ou seja, como faz isso com Shell script?????????? ; mas qualquer coisa q vcs virem q está errada é só falar.
# Vetor que tem as siglas de cada mês - vetor de strings
$#$ Dim nome_mes() As String = "jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"}
# Vetor que contém os números de dias para cada mês
$#$ Dim ndias_mes() As Integer = {31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
# Obter a data atual em partes
dia=%d
nmes=%m
ano=%Y
dia=dia-1
if [dia = 0]
then
mes=mes-1
if [mes=0]
then
mes=12
ano=ano-1
else
if [mes = 2]
then
if [ano é bissexto] # Como eu faço pra saber se o ano é bissexto? como é o mod em shell script?
then
ndias_mes(1) = 29
else
ndias_mes(1) = 28
fi
dia = ndias_mes(mes)
fi
fi
else
------------------------------------
fi
$#$
$#$ sigla_mes = nome_mes(mes - 1)
$#$
If [dia < 10]
Then
dia = "0" & dia
fi
If [ano < 10]
Then
ano = "0" & ano
fi
# Como faço pra concatenar strings e colcoar o resultado em uma variável?
$#$
$#$ filename=sigla_mes & dia & ano
$#$
ftp -in << EOF
open 10.98.1.207
user anonymous newton.junior@eln.gov.br
passive
binary
lcd /tmp/sage/arqs
# Esse trecho de código do ftp vai funcionar?????
for i in 1 2 3 4
do
filename=sigla_mes & dia & ano & "-" & i & ".csv"
put filename
done
close
bye
EOF