Re: query complicata con espressioni regolari

2015-02-14 Per discussione MaX
chiaro... da sola non serve a nulla, ma l' ho aggiunta per evitare che
inviassero al mailer indirizzi email da 65000 caratteri e mandarlo in
crash o cose del genere, inoltre i caratteri ammessi sono [a-z0-9.-_@]

Il 14/02/15, Lorenzo Breda ha scritto:
> Il giorno sab 14 feb 2015 12:14 MaX  ha scritto:
>
>
>
> inoltre l'email puó essere inviata solo da una form html specifica con
> una lunghezza di numero di caratteri limitata e un set di caratteri di
> base.
>
>
>
>  Questa, senza il resto di ciò che hai scritto, non sarebbe una buona
> misura di sicurezza: è banale mandare in get o post dei dati all'action del
> form senza alcuna di queste limitazioni.
>
> --
> Lorenzo Breda
>


-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmut3m+qzozc6hm0pgo+vz9phw7_puzxqgswu+rxfh-...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-14 Per discussione Lorenzo Breda
Il giorno sab 14 feb 2015 12:14 MaX  ha scritto:



inoltre l'email puó essere inviata solo da una form html specifica con
una lunghezza di numero di caratteri limitata e un set di caratteri di
base.



 Questa, senza il resto di ciò che hai scritto, non sarebbe una buona
misura di sicurezza: è banale mandare in get o post dei dati all'action del
form senza alcuna di queste limitazioni.

-- 
Lorenzo Breda


Re: query complicata con espressioni regolari

2015-02-14 Per discussione MaX
Il 14/02/15, Gian Uberto Lauri ha scritto:

>
> Un ultima cosa. Lo script per cambiare le password, così come è, va bene se
> è solo se
> è uno shell script via invocato via riga di comando da te. Se lo dai anche
> in mano
> anche a me io per lo meno ti cancello tutte le password :) :) :) (no, certi
> atti vandalici
> gratuiti non hanno senso, per me non vale la pena perderci tempo). Dicono
> che ci
> siano cose chiamate sql injections :) :) :). E non avete idea di cosa può
> fare il più
> incapace degli script kid col comando sqlmap.


non c' è pericolo per questo... è una funzione di un robot per la
richiesta di passwd nueve.
Tu mandi una email vuota con un indirizzo email, e lui ti rispedisce
una passwd allo stesso indirizzo.
Il testo contenuto non viene neppure preso in considerazione, per cui
anche a mettere un codice malizioso nell' email, non succede nulla
inoltre l'email puó essere inviata solo da una form html specifica con
una lunghezza di numero di caratteri limitata e un set di caratteri di
base.
Per finire l' indirizzo email viene validato prima di essere usato, in
modo da non impallare il mailer

Non dico che sia a prova di bomba, ma la vedo dura entrare da li.

cmq grazie per interessarti.


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmsmxw9seymeezwqfeo+6exvnq4hvzav81rnqeudgo+...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
Il 14/02/15, Gian Uberto Lauri ha scritto:
> Scusate il top quoting.
>
> Quello che subito non mi piace di questo script è che apri e chiudi troppe
> volte la
> connessione

si, anche a me non piace molto... per ora ho fatto un tes con 10.000
records e funziona, ma non è che sisal il massimo

> Se ti tirassi fuori tutti i record in un CSV con una select unica
> logicamente simile a

buona idea... non ci avevo pensato! :)



ciao
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAEyAVmubMU7eS-pK=vexrmh1m8c37s6hsu793pljhr27agh...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione Gian Uberto Lauri
Scusate il top quoting.

Quello che subito non mi piace di questo script è che apri e chiudi troppe 
volte la 
connessione

Se ti tirassi fuori tutti i record in un CSV con una select unica logicamente 
simile a

select post_id, post_username, post_text from phpbb_posts

in cui concateni in modo opportuno i valori delle colonne in modo da avere un 
CSV 
valido, facessi la tua elaborazione creando un file contenente una serie di 
statement di 
update e alla fine processassi tutti gli statement con una sola invocazione del 
comando mysql, beh penso che con 400.000 record la differenza si dovrebbe 
sentire 
anche se mysql contatta il server su 127.0.0.0 o Unix pipe.

Poi arricchirei la query per vedere se riesco a trovare i post scritti 
dall'utente 
Pincopanco contenenti la stringa "[quote]Pincopanco". Le ricerche full text 
usualmente 
non sono il massimo della forza di un DB - rispetto ad altri tipi di match - ma 
mi pare 
che abbiano arricchito i DB di funzioni diverse da live fatte proprio per la 
ricerca di 
pattern nei clob.

Non mi piacciono tantissimo nemmeno i trigger. Io userei awk. Mi sa che te la 
cavi con 
meno processi.

Se però il testo del post contiene degli  casca il palco dei CSV che hanno 
un 
solo record per riga.

In quel caso mi ricupererei il sorgente dello script ad di Kernighan e Pike e 
vedrei di 
sfruttare quello - e magari le stored procedure di mysql - per fare una 
connessione al 
DB per leggere i dati ed una per scriverli.

Un ultima cosa. Lo script per cambiare le password, così come è, va bene se è 
solo se 
è uno shell script via invocato via riga di comando da te. Se lo dai anche in 
mano 
anche a me io per lo meno ti cancello tutte le password :) :) :) (no, certi 
atti vandalici 
gratuiti non hanno senso, per me non vale la pena perderci tempo). Dicono che 
ci 
siano cose chiamate sql injections :) :) :). E non avete idea di cosa può fare 
il più 
incapace degli script kid col comando sqlmap.

--
Gian Uberto "saint" Lauri
inviata da un tablet

> On 14 Feb 2015, at 02:30, MaX  wrote:
> 
> ok, mi riposnto da solo... ecco lo scrit funzionante... non ho ancora
> fatto le prove di carico... ma ad occhio 癡 rapido, per lo meno nei
> test
> 
> --
> 
> #!/bin/bash
> #exit
> source config.conf
> 
> max_post_id=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT MAX(post_id) AS post_id FROM
> phpbb_posts;"
> )
> #"
> max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
> echo max_post_id=$max_post_id # numero da usare per il ciclo for o while
> 
> # solo per test test
> #max_post_id=$1
> 
> while [ $max_post_id -gt 0 ]; do  # ciclo while ecluso per test
>post_username=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
> post_id= $max_post_id;")
>post_username=$(echo $post_username | sed 's|^post_username ||')
>echo 
> "###"
>echo max_post_id=$max_post_id
>echo post_username=$post_username
> 
>post_text=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
> post_id
> = $max_post_id;")
>post_text=$(echo $post_text | sed 's|^post_text ||')
> 
> #echo $post_text
> 
>Trigger=$(echo $post_text | sed 's||\n|g' | sed
> "s|\[quote\]$post_username,\([0-9/]*\), \([0-9:]*\)\]|AA#AA|"
> | grep AA#AA)
> #echo Trigger1=$Trigger
> 
>if [ -z $Trigger ]; then
>Trigger=$(echo $post_text | sed "s|Data originale: \([0-9-]*\)
> \([0-9:]*\),\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]|AA#AA|I" | sed 's||\n|g'  | grep AA#AA )
> #echo Trigger2=$Trigger
>fi
>if [ -z $Trigger ]; then
>Trigger=$(echo $post_text | sed "s|Data originale: \([0-9-]*\)
> \([0-9:]*\),\[quote\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]|AA#AA|" | sed 's||\n|g' | grep AA#AA | uniq)
> #echo Trigger3=$Trigger
>fi
>if [ $Trigger = "AA#AA" ] 2>/dev/null ; then
>new_post_text=$(echo $post_text  | sed
> "s|\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]||I" | sed 's|\"|\\"|g')
>new_post_text=$(echo $new_post_text  | sed "s|Data originale:
> \([0-9-]*\) \([0-9:]*\),\[quote\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]|Data Originale: \1 \2|I" | sed 's|\"|\\"|g'
> )
>new_post_text=$(echo $new_post_text  | sed "s|Data originale:
> \([0-9-]*\) 
> \([0-9:]*\),\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]|Data Originale: \1 \2|I")
>new_post_text=$(echo $new_post_text | sed
> 's|\[url-local:\([a-zA-Z0-9]*\)\]attachment/\([a-zA-Z0-9_#&%.;]*\)\[/url-local:\([a-zA-Z0-9]*\)\]||')
> #echo $new_post_text
>   mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
> "UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
> \"$max_post_id\""
>else
>echo "
> 

Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
ok, mi riposnto da solo... ecco lo scrit funzionante... non ho ancora
fatto le prove di carico... ma ad occhio è rapido, per lo meno nei
test

--

#!/bin/bash
#exit
source config.conf

max_post_id=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT MAX(post_id) AS post_id FROM
phpbb_posts;"
)
#"
max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

# solo per test test
#max_post_id=$1

while [ $max_post_id -gt 0 ]; do  # ciclo while ecluso per test
post_username=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
 post_id= $max_post_id;")
post_username=$(echo $post_username | sed 's|^post_username ||')
echo 
"###"
echo max_post_id=$max_post_id
echo post_username=$post_username

post_text=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
post_id
= $max_post_id;")
post_text=$(echo $post_text | sed 's|^post_text ||')

#echo $post_text

Trigger=$(echo $post_text | sed 's||\n|g' | sed
"s|\[quote\]$post_username,\([0-9/]*\), \([0-9:]*\)\]|AA#AA|"
| grep AA#AA)
#echo Trigger1=$Trigger

if [ -z $Trigger ]; then
Trigger=$(echo $post_text | sed "s|Data originale: \([0-9-]*\)
\([0-9:]*\),\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]|AA#AA|I" | sed 's||\n|g'  | grep AA#AA )
#echo Trigger2=$Trigger
fi
if [ -z $Trigger ]; then
Trigger=$(echo $post_text | sed "s|Data originale: \([0-9-]*\)
\([0-9:]*\),\[quote\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]|AA#AA|" | sed 's||\n|g' | grep AA#AA | uniq)
#echo Trigger3=$Trigger
fi
if [ $Trigger = "AA#AA" ] 2>/dev/null ; then
new_post_text=$(echo $post_text  | sed
"s|\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]||I" | sed 's|\"|\\"|g')
new_post_text=$(echo $new_post_text  | sed "s|Data originale:
\([0-9-]*\) \([0-9:]*\),\[quote\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]|Data Originale: \1 \2|I" | sed 's|\"|\\"|g'
)
new_post_text=$(echo $new_post_text  | sed "s|Data originale:
\([0-9-]*\) 
\([0-9:]*\),\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]|Data Originale: \1 \2|I")
new_post_text=$(echo $new_post_text | sed
's|\[url-local:\([a-zA-Z0-9]*\)\]attachment/\([a-zA-Z0-9_#&%.;]*\)\[/url-local:\([a-zA-Z0-9]*\)\]||')
#echo $new_post_text
   mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
"UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
\"$max_post_id\""
else
echo "
lascio inalterato"
fi
let max_post_id=max_post_id-1
done

exit

--

ciao
MaX

2015-02-13 21:08 GMT+01:00, MaX :
>  ho fatto alcune correzzioni a questa bozza.
> Quello che mi scoccia è che lavorando cosí va a aggiornare tutti i
> post del database, sia che siano da modificare o meno.
> Bisognerebbe trovare il modo per detectare che il post è da moficicare
> e poi mettere una condizione if
>
> ---
>
> #!/bin/bash
> source config.conf
>
> max_post_id=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT MAX(post_id) AS post_id FROM
> phpbb_posts;")
> #"
> max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
> echo max_post_id=$max_post_id # numero da usare per il ciclo for o while
>
> # solo per test test
> #post_id=10
>
> while [ $max_post_id = 0 ]; do  # ciclo while ecluso per test
> post_username=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
> post_id= $max_post_id;")
> post_username=$(echo $post_username | sed 's|^post_username ||')
> echo post_username=$post_username
>
> post_text=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
> post_id= $max_post_id;")
> post_text=$(echo $post_text | sed 's|^post_text ||')
>
> new_post_text=$(echo $post_text | sed
> "s|\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]||I")
> echo $new_post_text
> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
> "UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
> \"$max_post_id\""
>
> let max_post_id=max_post_id-1
> done
>
> exit
>
>
>
>
> ---
>
> Il 13/02/15, MaX ha scritto:
>> opss  rileggento ho visto un errore:
>>
>> while [ $post_id = 0 ]; do  -->  while [ $max_post_id = 0 ]; do
>>
>> Il 13/02/15, MaX ha scritto:
>>> pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
>>> non si se è abbastanza veloce
>>>
>>> --
>>> source config.conf
>>>
>>> post_id=$(mysql --database="$MYDB" --user=$USER --password="$PASSW

Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
 ho fatto alcune correzzioni a questa bozza.
Quello che mi scoccia è che lavorando cosí va a aggiornare tutti i
post del database, sia che siano da modificare o meno.
Bisognerebbe trovare il modo per detectare che il post è da moficicare
e poi mettere una condizione if

---

#!/bin/bash
source config.conf

max_post_id=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT MAX(post_id) AS post_id FROM
phpbb_posts;")
#"
max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

# solo per test test
#post_id=10

while [ $max_post_id = 0 ]; do  # ciclo while ecluso per test
post_username=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
post_id= $max_post_id;")
post_username=$(echo $post_username | sed 's|^post_username ||')
echo post_username=$post_username

post_text=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
post_id= $max_post_id;")
post_text=$(echo $post_text | sed 's|^post_text ||')

new_post_text=$(echo $post_text | sed
"s|\[quote:\([a-zA-Z0-9]*\)\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]||I")
echo $new_post_text
mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
"UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
\"$max_post_id\""

let max_post_id=max_post_id-1
done

exit




---

Il 13/02/15, MaX ha scritto:
> opss  rileggento ho visto un errore:
>
> while [ $post_id = 0 ]; do  -->  while [ $max_post_id = 0 ]; do
>
> Il 13/02/15, MaX ha scritto:
>> pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
>> non si se è abbastanza veloce
>>
>> --
>> source config.conf
>>
>> post_id=$(mysql --database="$MYDB" --user=$USER --password="$PASSWD"
>> -e "SELECT MAX(post_id) AS post_id FROM phpbb_posts;")
>>
>> max_post_id=$(echo $post_id | sed 's|^post_id ||')
>> #echo max_post_id=$max_post_id # numero da usare per il ciclo for o while
>>
>> while [ $post_id = 0 ]; do
>>
>> post_username=$(mysql --database="$MYDB" --user=$USER
>> --password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
>> post_id= $post_id;")
>> post_username=$(echo $post_username | sed 's|^post_username ||')
>> #echo post_username=$post_username
>>
>> post_text=$(mysql --database="$MYDB" --user=$USER
>> --password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
>> post_id= $post_id;")
>> post_text=$(echo $post_text | sed 's|^post_text ||')
>>
>> new_post_text=$(echo $post_text | sed
>> "s|\[quote:3pjjad9s\]$post_username,\([0-9/]*\),
>> \([0-9:]*\)\]||I")
>> #echo $new_post_text
>> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
>> "UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
>> \"$post_id\""
>>
>> let post_id=post_id-1
>> done
>> 
>>
>> ...che ne dite?
>> MaX
>>
>> Il 13/02/15, MaX ha scritto:
>>> ciao a tutti
>>>
>>> avrei un problema con le espessioni regolari dentro ad una query mysql
>>> inglobata a sua volta in uno script  :)
>>>
>>> chpass() {
>>> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
>>> "UPDATE phpbb_users
>>> SET user_password = \"$HPPASS\" WHERE username = \"$PHPBB_USER\""
>>> }
>>>
>>> questo sopra è un esempio che uso per modificare via script la passwd
>>> di un utente in phpbb.
>>>
>>> Ora peró vorrei cancellare una parte di testo dal campo "
>>> phpbb_posts/post_text" ma solo se dentro a questo testo appare:
>>> [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
>>> relativo campo " phpbb_posts/post_username"
>>>
>>> Praticamente c' è da cancellare la linea "[quote]Alfredo,20/7/2012,
>>> 19:54]" solo se nel campo  "post_username" il nome coincide con
>>> "Alfredo".
>>>
>>> A complicare le cose... la data di fianco è variabile, e il
>>> "[quote]Alfredo,20/7/2012, 19:54]"
>>> è sempre nella seconda linea
>>>
>>> Come se non bastasse, se nel messsaggio compare un
>>> "[quote]Alfredo,20/7/2012, 19:54]", ma nel "post_username" il nome è
>>> differente da "Alfredo", allora bisogna lasciarlo.
>>>
>>> ..e naturalmente il resto del messaggio deve rimanere inalterato.
>>>
>>> qualche idea?
>>>
>>> io stavo pensando di estrarre il post_id,post_text,post_text con una
>>> query, fare le comparazioni con gli strumenti della shell linux,
>>> togliere eventualemente il testo e poi reimmettere il testo modificato
>>> usando come riferimento il post_id
>>>
>>> o ci sono soluzioni migliori... e più rapide... interne a mysql?
>>>
>>> ciao
>>> MaX
>>>
>>
>>
>> --
>> ciao,
>> MaX
>>
>
>
> --
> ciao,
> MaX
>


-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas..

Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
opss  rileggento ho visto un errore:

while [ $post_id = 0 ]; do  -->  while [ $max_post_id = 0 ]; do

Il 13/02/15, MaX ha scritto:
> pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
> non si se è abbastanza veloce
>
> --
> source config.conf
>
> post_id=$(mysql --database="$MYDB" --user=$USER --password="$PASSWD"
> -e "SELECT MAX(post_id) AS post_id FROM phpbb_posts;")
>
> max_post_id=$(echo $post_id | sed 's|^post_id ||')
> #echo max_post_id=$max_post_id # numero da usare per il ciclo for o while
>
> while [ $post_id = 0 ]; do
>
> post_username=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
> post_id= $post_id;")
> post_username=$(echo $post_username | sed 's|^post_username ||')
> #echo post_username=$post_username
>
> post_text=$(mysql --database="$MYDB" --user=$USER
> --password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
> post_id= $post_id;")
> post_text=$(echo $post_text | sed 's|^post_text ||')
>
> new_post_text=$(echo $post_text | sed
> "s|\[quote:3pjjad9s\]$post_username,\([0-9/]*\),
> \([0-9:]*\)\]||I")
> #echo $new_post_text
> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
> "UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
> \"$post_id\""
>
> let post_id=post_id-1
> done
> 
>
> ...che ne dite?
> MaX
>
> Il 13/02/15, MaX ha scritto:
>> ciao a tutti
>>
>> avrei un problema con le espessioni regolari dentro ad una query mysql
>> inglobata a sua volta in uno script  :)
>>
>> chpass() {
>> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
>> "UPDATE phpbb_users
>> SET user_password = \"$HPPASS\" WHERE username = \"$PHPBB_USER\""
>> }
>>
>> questo sopra è un esempio che uso per modificare via script la passwd
>> di un utente in phpbb.
>>
>> Ora peró vorrei cancellare una parte di testo dal campo "
>> phpbb_posts/post_text" ma solo se dentro a questo testo appare:
>> [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
>> relativo campo " phpbb_posts/post_username"
>>
>> Praticamente c' è da cancellare la linea "[quote]Alfredo,20/7/2012,
>> 19:54]" solo se nel campo  "post_username" il nome coincide con
>> "Alfredo".
>>
>> A complicare le cose... la data di fianco è variabile, e il
>> "[quote]Alfredo,20/7/2012, 19:54]"
>> è sempre nella seconda linea
>>
>> Come se non bastasse, se nel messsaggio compare un
>> "[quote]Alfredo,20/7/2012, 19:54]", ma nel "post_username" il nome è
>> differente da "Alfredo", allora bisogna lasciarlo.
>>
>> ..e naturalmente il resto del messaggio deve rimanere inalterato.
>>
>> qualche idea?
>>
>> io stavo pensando di estrarre il post_id,post_text,post_text con una
>> query, fare le comparazioni con gli strumenti della shell linux,
>> togliere eventualemente il testo e poi reimmettere il testo modificato
>> usando come riferimento il post_id
>>
>> o ci sono soluzioni migliori... e più rapide... interne a mysql?
>>
>> ciao
>> MaX
>>
>
>
> --
> ciao,
> MaX
>


-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAEyAVmsZGJSjTFtVHy10s9FrMS_Kp+v=st7jgyd3o2k9gat...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
non si se è abbastanza veloce

--
source config.conf

post_id=$(mysql --database="$MYDB" --user=$USER --password="$PASSWD"
-e "SELECT MAX(post_id) AS post_id FROM phpbb_posts;")

max_post_id=$(echo $post_id | sed 's|^post_id ||')
#echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

while [ $post_id = 0 ]; do

post_username=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_username FROM phpbb_posts WHERE
post_id= $post_id;")
post_username=$(echo $post_username | sed 's|^post_username ||')
#echo post_username=$post_username

post_text=$(mysql --database="$MYDB" --user=$USER
--password="$PASSWD" -e "SELECT post_text FROM phpbb_posts WHERE
post_id= $post_id;")
post_text=$(echo $post_text | sed 's|^post_text ||')

new_post_text=$(echo $post_text | sed
"s|\[quote:3pjjad9s\]$post_username,\([0-9/]*\),
\([0-9:]*\)\]||I")
#echo $new_post_text
mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
"UPDATE phpbb_posts SET post_text = \"$new_post_text\" WHERE post_id =
\"$post_id\""

let post_id=post_id-1
done


...che ne dite?
MaX

Il 13/02/15, MaX ha scritto:
> ciao a tutti
>
> avrei un problema con le espessioni regolari dentro ad una query mysql
> inglobata a sua volta in uno script  :)
>
> chpass() {
> mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
> "UPDATE phpbb_users
> SET user_password = \"$HPPASS\" WHERE username = \"$PHPBB_USER\""
> }
>
> questo sopra è un esempio che uso per modificare via script la passwd
> di un utente in phpbb.
>
> Ora peró vorrei cancellare una parte di testo dal campo "
> phpbb_posts/post_text" ma solo se dentro a questo testo appare:
> [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
> relativo campo " phpbb_posts/post_username"
>
> Praticamente c' è da cancellare la linea "[quote]Alfredo,20/7/2012,
> 19:54]" solo se nel campo  "post_username" il nome coincide con
> "Alfredo".
>
> A complicare le cose... la data di fianco è variabile, e il
> "[quote]Alfredo,20/7/2012, 19:54]"
> è sempre nella seconda linea
>
> Come se non bastasse, se nel messsaggio compare un
> "[quote]Alfredo,20/7/2012, 19:54]", ma nel "post_username" il nome è
> differente da "Alfredo", allora bisogna lasciarlo.
>
> ..e naturalmente il resto del messaggio deve rimanere inalterato.
>
> qualche idea?
>
> io stavo pensando di estrarre il post_id,post_text,post_text con una
> query, fare le comparazioni con gli strumenti della shell linux,
> togliere eventualemente il testo e poi reimmettere il testo modificato
> usando come riferimento il post_id
>
> o ci sono soluzioni migliori... e più rapide... interne a mysql?
>
> ciao
> MaX
>


-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmuo2uo+edur1czegngt6foav7pkriacndwst_kj0fm...@mail.gmail.com



query complicata con espressioni regolari

2015-02-13 Per discussione MaX
ciao a tutti

avrei un problema con le espessioni regolari dentro ad una query mysql
inglobata a sua volta in uno script  :)

chpass() {
mysql --database="$MYDB" --user="$USER" --password="$PASSWD" -e
"UPDATE phpbb_users
SET user_password = \"$HPPASS\" WHERE username = \"$PHPBB_USER\""
}

questo sopra è un esempio che uso per modificare via script la passwd
di un utente in phpbb.

Ora peró vorrei cancellare una parte di testo dal campo "
phpbb_posts/post_text" ma solo se dentro a questo testo appare:
[quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
relativo campo " phpbb_posts/post_username"

Praticamente c' è da cancellare la linea "[quote]Alfredo,20/7/2012,
19:54]" solo se nel campo  "post_username" il nome coincide con
"Alfredo".

A complicare le cose... la data di fianco è variabile, e il
"[quote]Alfredo,20/7/2012, 19:54]"
è sempre nella seconda linea

Come se non bastasse, se nel messsaggio compare un
"[quote]Alfredo,20/7/2012, 19:54]", ma nel "post_username" il nome è
differente da "Alfredo", allora bisogna lasciarlo.

..e naturalmente il resto del messaggio deve rimanere inalterato.

qualche idea?

io stavo pensando di estrarre il post_id,post_text,post_text con una
query, fare le comparazioni con gli strumenti della shell linux,
togliere eventualemente il testo e poi reimmettere il testo modificato
usando come riferimento il post_id

o ci sono soluzioni migliori... e più rapide... interne a mysql?

ciao
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAEyAVms3caPOs=wF9mNnrVmf15jVgywvyvMovDhxoDweBdH=e...@mail.gmail.com