Estou tentando obter uma lista de arquivos disponíveis em um servidor ftp do Windows e depois fazer mais processamento. Usando CURL para obter a lista de arquivos.
Eu estou recebendo a saída exibida no navegador, mas é obsoleto.
Quando eu crio um novo arquivo no servidor FTP, ele não está exibindo as últimas alterações.
Para garantir que o script seja executado, coloquei em ls -ltr
no final para verificar se o arquivo FTP_LISTING
está sendo gravado. O registro de data e hora muda toda vez que eu atualizo a página.
Script CGI:
#!/usr/bin/ksh -x
echo 'Content-type: text/html'
echo
export PATH=$PATH:$HOME:/usr/bin/ksh
export FPATH=FINCTION_LIB_PATH
autoload set_env_variables
set_env_variables devfpf
echo "<HTML>"
echo "<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />"
echo "<meta http-equiv="Pragma" content="no-cache" />"
echo "<meta http-equiv="Expires" content="0" />"
echo "<meta http-equiv="Cache-control" content="no-cache">"
echo "<HEAD>"
echo "</HEAD>"
echo "<TITLE>Windows Box Logs</TITLE>"
echo "<H2 align=left> <font color=red> Showing logs for NTFTP1 </FONT></H2>"
echo '<pre>'
ksh /PATH_TO_SCRIPT/get_ntftp1_logs.ksh
if [ $? = 0 ]; then
echo '<pre>'
cat /usr/appl/fpf/home/devfpf/logs/ntftp1.list | column -t
else
echo "Script did not run."
fi
echo "<BODY>"
echo '<pre>'
cat /PATH_TO_LIST_FILE/ntftp1.list
echo '</pre>'
echo "</BODY>"
echo "</HTML>"
Script da Shell:
#!/usr/bin/ksh
export PATH=$PATH:$HOME:/usr/bin/ksh:$HOME/utilities
autoload set_env_variables
export FPATH=/FUNCTION_LIB_PATH/function_lib
FTP_LISTING=/PATH_TO_LIST_FILE/ntftp1.list
FTP_CREDS=/PATH_TO_FTP_CREDENTIALS/.ftp_users.ini
echo " "
USERNAME='cat $FTP_CREDS | awk {'print $1'}'
PASSWORD='cat $FTP_CREDS | awk {'print $2'}'
FTP_HOST='cat $FTP_CREDS | awk {'print $3'}'
for DIR in REMOTE_FTP_PATH_1/ \
REMOTE_FTP_PATH_2/ \
REMOTE_FTP_PATH_3/
do
echo "<H3 align=left> <font color=black> $DIR@$FTP_HOST : </FONT></H3>"
echo 'yes +|head -45'|tr -d ' ' >> $FTP_LISTING
curl ftp://$USERNAME:$PASSWORD@$FTP_HOST/%2f$DIR | sed -e '1,11d' | head -n -4 | sed 's/<A HREF=\"[^"]*\"//g' | tr -d '>' | sed 's/<\/A/ /g' | tr -d '\r' | awk '{print $1,$2,$3,"<A HREF=http://apache_host.domain.com:port/cgi-bin/download_ntftp1_log-cgi?FILE="$4">" $4 "</A>"}' >> $FTP_LISTING
echo " "
done
Mais tarde, estou tentando colocar um link em nomes de arquivos individuais. O que estou fazendo errado?
Em todos os casos a seguir, consigo ver os novos detalhes do arquivo de atualização no shell.
Executando cgi como ksh -x cgi_script
Executando o script de shell na linha de comando
Experimentando o comando CURL a partir da linha de comando
Tentando buscar os detalhes no navegador por meio de ftp: //
Inicialmente, achei que tinha algo a ver com o cache. No entanto, colocar meta tags no cache não ajudou muito.
Todas as recomendações são bem vindas. Desde já, obrigado.