Newsgroup: it.comp.lang.perl
Titolo: Conversione script bash in Perl

Salve ragazzi,
sono nuovo di Perl e del gruppo. Vorrei sapere come convertire un o
script bash in perl. Ecco il codice:
#!/bin/sh
# test_dsa_alive.sh
# report macchina in tempo reale
# IMPORTANTE:
# settare correttamente la variabile RC.DSA
# in SNMP_HOME c'e' la home di installazione degli agenti snmp
#
nomem=`hostname`
datar=`date`
fileout=`hostname`_out.txt
RCDSA=/data/dsas/rc.dsa
SNMP_HOME=/opt/snmpagents/snmp
ODSRELEASE=/opt/ids420
echo 'Report macchina '$nomem'     del : '$datar > $HOME/$fileout
echo '                                                         ' >>
$HOME/$fileout
echo '                                                         ' >>
$HOME/$fileout
echo ' --------------------' >>  $HOME/$fileout
echo ' Stato Filesystem:' >>  $HOME/$fileout
df -h >> $HOME/$fileout
echo >> $HOME/$fileout
echo ' --------------------' >>  $HOME/$fileout
echo ' Stato Agenti SNMP:  ' >>  $HOME/$fileout
$SNMP_HOME/S99cpSnmpAgentrc status >> $HOME/$fileout
echo >> $HOME/$fileout
for i in `cat $RCDSA | sed 's/ //'`
do
#
#	dentro la variabile REM ci va il carattere #
#	se la riga del rc.dsa comincia con #
#	equivale a commento, da ignorare
# NOTARE: IL SED DENTRO AL CAT DEL CICLO FOR
#	E' NECESSARIO PER TOGLIERE GLI SPAZI ALLA RIGA
#	CONTENENTE DEI COMMENTI,ALTRIMENTI LA VARIABILE
# 'i' VIENE VALORIZZATA NON PER RIGA, MA PER PAROLE !!
#
REM=`echo $i | sed 's/[^#]*$//'`
#
	if [ "$REM" = '' ]
	then
		NOME_DSA=`echo $i | sed 's/.*\///'`
		PATH_DSA=`echo $i | sed 's/[^\/]*$//'`
		cd $i
		# Definizioni variabili
		# per stato backup, nome backup, esito, stato traffic.log, stato
freeze
		#
		varbkp=`tail -1 $PATH_DSA/$NOME_DSA/backup.ctrl | cut -f 2,3,4,5,6 -
d ' ' | sed 's/ \/ /-/g'`" ora: "`tail -1 backup.ctrl | cut -f
8,9,10,11,12 -d ' ' | sed 's/ //g'`
		varnamebk=`tail -1 $PATH_DSA/$NOME_DSA/backup.ctrl | cut -f 1 -d '
'`
		varesito=`tail -1 $PATH_DSA/$NOME_DSA/$varnamebk/backup.log | cut -c
8-100`
		vartraf=`/opt/ids420/bin/odstlog`
		varfr=`/opt/ids420/bin/odsanac | grep freeze-state | cut -c 16-100`
		echo '********************************************************' >>
$HOME/$fileout
		echo '                                                        ' >>
$HOME/$fileout
		varmaster=`/opt/ids420/bin/odsanac | grep master-count | cut -c 1-6`
		varshadow=`/opt/criticalpath/ids42/bin/odsanac  | grep shadow-count
| cut -c 1-6`
		value=`/opt/ids420/bin/odsanac | grep master-count | cut -c 13-100`
		values=`/opt/ids420/bin/odsanac | grep shadow-count | cut -c 13-100`
		# Se questo e' uno shadow scrive le entry shadow-count
		if [ "$value" -eq 0 ]
			then
			echo 'Nome Dsa :      '$NOME_DSA'       '$varshadow >> $HOME/
$fileout
			echo '                                    ' >> $HOME/$fileout
			echo 'Numero di Entry............'$values >> $HOME/$fileout
			fi
		# Altrimenti se e' master scrive le entry master-count
		if [ "$value" -gt 0 ]
			then
			echo 'Nome Dsa :      '$NOME_DSA'       '$varmaster >> $HOME/
$fileout
			echo '                                      ' >> $HOME/$fileout
			echo 'Numero di Entry............'$value >> $HOME/$fileout
			fi
		# Controllo dell'ultimo backup
		echo '                                                 ' >> $HOME/
$fileout
		echo 'Nome ultimo backup......... '$varnamebk >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
		echo 'Data ed ora ultimo backup.. '$varbkp >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
		echo 'Esito...................... '$varesito >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
		# Stampa stato traffic.log
		echo $vartraf >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
        	# Stampa stato del freeze del directory
		echo 'Freeze-state................'$varfr >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
		echo '                                                 ' >> $HOME/
$fileout
		#
		# Controllo stato del servizio LDAP
		#
		stato=`/opt/ids420/bin/odsmgmt -v | grep odsldap3`
		if [ "$stato" -gt 0 ]
			then
			val="UP"
			else val="DOWN"
			fi
		echo 'Stato servizio LDAP........'$val >> $HOME/$fileout
		echo '                                                 ' >> $HOME/
$fileout
		# Stampa stato up/down del servizio LDAP
		fi
	done
#
# Sezione di invio FTP verso la macchina di test
#
HOST='172.18.178.243'
USER='cpds'
PASSWD='cpds'
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
lcd $HOME
put $fileout
quit
END_SCRIPT
exit 0

 script bash in perl. 
Che vuol dire "Vorrei sapere come convertire uno script
bash in perl?"
Semplice, ti studi il codice e lo rifai in perl.
Non spererai mica che qualcuno te lo faccia avanzatempo eh?

 Non spererai mica che qualcuno te lo faccia avanzatempo eh?
Non siete in grado di farlo è semplice.

 Non siete in grado di farlo č semplice.
No, non ho voglia di farlo :) E' diverso.

 script bash in perl. Ecco il codice:
[cut]
Visto che lo script in questione non è proprio banalissimo (lancia diversi 
comandi di sistema per testare cose tipo LDAP e fa un FTP finale), hai due 
possibilità
1) Lanci un banalissimo system('test_dsa_alive.sh') che non fa altro che 
lanciare il tuo script
2) Ti metti di impegno a convertirlo riga per riga (lanciando gli stessi 
comandi con delle "open" opportune e catturandone lo script) e usando il 
modulo Net::FTP per la parte finale di upload via FTP.