mysql
Show Grants:
mysql --skip-column-names -e "select distinct concat('show grants for''',user,'''@''',host,''';') as query from mysql.user" | \ mysql --skip-column-names | \ perl -ne 'next if m/(?:replica|root)/; s/$/;/; print; END {print "flush privileges;\n" }'
or use maatkit
Show Users:
select user,host from mysql.user;
perl
Debugging:
$| = 1; Wenn diese Variable auf einen Wert ungleich 0 gesetzt wird, werden Ausgaben mit print nicht gepuffert, sondern erfolgen in dem Augenblick, wo die print-Anweisung interpretiert wird. Normalerweise puffert Perl Ausgaben, um sie dann blockweise auszugeben.
Base64 encoding (e.g. smtp auth)
perl -MMIME::Base64 -e print encode_base64("text");
strings
feature
$ greedy match : 1#2#3#4 -> 1#2#3 $ non greedy match : 1#2#3#4 -> 1 $ last column : 1#2#3#4 -> 4 $ last 3 line $ first 3 line $ all but first 3 lines $ all but last 3 lines
sed
$ sed -e 's/\(.*\)#.*/\1/' $ sed -e 's/\([^#]*\)#.*/\1/' $ sed -e 's/.*#//'
perl
$ perl -pe 's/(.*)#.*/\1/' $ perl -pe 's/(.*?)#.*/\1/'a $ perl -pe 's/.*#(.*)/\1/' $ perl -lane 'print $F[-1]' (alt. last column)
ruby
$ ruby -pe "gsub(/(.*)#.*/,'\1')" $ ruby -pe "gsub(/(.*?)#.*/,'\1')" $ ruby -pe "gsub(/.*#(.*)/,'\1')"
awk
$ awk -F"#" '{{for (i=1; i<NF-1; i++) printf $i "#"} print $(NF-1)}' $ awk -F"#" '{print $1}' $ awk -F"#" '{print $NF}'
bash
$ ??? $ ??? $ while IFS="#" read -r -a line; do nb=${#line[@]} echo ${line[$((nb - 1))]} done
other tools
$ cut -F# -f1 $ ??? $ rev | cut -F# -f1 | rev
Show Grants:
mysql --skip-column-names -e "select distinct concat('show grants for''',user,'''@''',host,''';') as query from mysql.user" | \
mysql --skip-column-names | \
perl -ne 'next if m/(?:monit|replica|root|ronie)/; s/$/;/; print; END {print "flush privileges;\n" }'}}
Show Users:
select user,host from mysql.user;