Newsgroup: it.comp.www.php
Titolo: [newbie] domandine facili sul trattamento file di testo

 una spiegazione o un riferimento sarebbero graditi :)
riferimento:
http://www.php.net/manual/it/ref.filesystem.php
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://php.dopoil.com

 una riga o due e qualcuno volesse scrivermela gli saro' grato :)
per quello temo che sia l'unica fare un fseek sul fondo e andare 
all'indietro fino a trovare il 50° '\n'...
oppure tenerti 50 stringhe (una per riga), le bufferizzi e man mano che vai 
avanti cancelli la prima e aggiungi l'ultima (magari con un puntatore 
vecchio stile liste in c) fino alla fine in cui ti ritrovi le ultime 50. 
però se il file è lungo, ti seghi le gambe: meglio il 1° metodo.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/free-doc.it.html

una riga o due e qualcuno volesse scrivermela gli saro' grato :)
L'unico metodo pratico e' fare
	$fp = popen("sudo /usr/bin/tail -n 50 /var/log/messages", "r");
	while(!feof($fp))
		$msg[] = fgets($fp, 1024);
perche' /var/log/messages e' root.root 640 e PHP non lo legge neanche se
piangi in greco; e metterlo 644 e' inopportuno.
Ti tocca, via visudo, aggiungere qualcosa tipo
User_Alias      PHPDMNS = nobody,wwwrun	# Vedi tu...
Cmnd_Alias      LASTLOG = /usr/bin/tail -n 50 /var/log/messages
PHPDMNS ALL=(root)	NOPASSWD: LASTLOG
...in realta' sono stato un tantino di manica larga con quel PHPDMNS. La
meglio e' se l'utente e' wwwrun e non puo' fare login ne' accettare su's
da nessuna parte, altrimento
	lserni $ su - nobody
	nobody $ sudo /usr/bin/tail -n 50 /var/log/messages
ed ecco che lserni si legge messages e puo' valutare macari l'effizienza
del suo nuovo ssh-checker ovv. sfonda-faiuròll o cose simili (certo, non
puo' cancellare le tracce, solo accorgersi se e' stato sgamato, ma...)
Leonardo psicopatico
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

alcun errore :( ma senza neanche farmi vedere il log ?
Un ottimo motivo potrebbe essere che quello script gli fa leggere i dati
dentro $msg, ma NON GLIELI FA STAMPARE :-)
	while($feof($fp))
		$msg[] = fgets($fp, 1024);
++	reset($msg);
++	foreach($msg as $line)
++	{
++		if (eregi('kernel', $line))
++		{
++			print "<TT>Kernel msg: $line</TT>";
++		}
++	}
Un secondo motivo: hai mai digitato il comando "visudo" da root, come ti
dicevo? :-))) Perche', di default, ne' PHP ne' Apache possono ciacciarci
dentro, nel file /var/log/messages, ne' comandare a "tail" di farlo.
Leonardo


"killall -9 diald" ?
Un'altra sessione di visudo, e poi 
	system("/sbin/sudo /usr/bin/killall -9 diald");
Se questo diventa un vizio :-) ti conviene creare uno script con tutti
i comandi accessibili a PHP, e poi:
#!/bin/sh
# Verifica che $PPID sia il PID di un Apache
# altrimenti insulti, logger -t SECURITY ed exit
case "$1" in
	reboot)
		# Reboots system
		reboot
	;;
	killdiald)
		# Disables DIALD
		killall -TERM diald
		sleep 2
		killall -KILL diald
	;;
	tailmsgs)
		# Lists messages
		N=$[ 0 + "$2" ]
		tail -n $N /var/log/messages \
		| grep -v "SECURITY\|anonymous\|..."
		# La riga sopra "censura" il log
	;;
	# Eccetera
	*)
		cat <<- HERE
			Unknown option "$1".
			Recognized commands are:
HERE
		grep -A1 "^[^a-z]*\<[a-z0-9]*)$" $0 \
		| tr -d "#)"
	;;
esac
e poi "sudare" PHP per usare solo quel comando, con qualsiasi parametro.
Leonardo