Доброго времени суток
первое что удивило, что python всегда привязывает регексп к началу строки, как если бы я вместо re.compile('sshd') писал re.compile('^sshd'). Но даже если я заменю на re.compile('.*sshd'), питон всё рано не может найти соответствия там, где его видят и perl, и grep
perl:
# cat test.pl
#!/usr/bin/perl
use strict;
use Data::Dumper;
open FILE, "/proc/26673370/psinfo";
my $content = join("", <FILE>);
close FILE;
printf "%s\n", Dumper($content);
if ( $content =~ m/sshd/ ) {
printf "match found\n";
}
# ./test.pl
$VAR1 = 'AA���r�r�r�
\\��T\'�`��/�/�/�/�sshdsshd: ok@pts/0 }��
}AS<COTHER����';
match found
grep:
# cat /proc/26673370/psinfo | grep sshd
# echo $?
0
# cat /proc/26673370/psinfo | grep sshc
# echo $?
1
python:
# cat test.py
#!/usr/bin/python
import os
import re
import pprint
re_ssh = re.compile('.*sshd')
filename = os.path.join('/proc', '26673370', 'psinfo')
content = open(filename, 'rb').read()
c = ''.join(content)
m = re_ssh.match(c)
print c
if m:
print "match found"
print ""
pprint.pprint(c)
# ./test.py
AA���r�r�r�
\��T'�`��/�/�/�/�sshdsshd: ok@pts/0 }��
}AS<COTHER����
"\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02A\x00\x00\x00\x00\x00\x00\x02A\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01\x97\x00\xda\x00\x00\x00\x00\x01\x9b\x00r\x00\x00\x00\x00\x01\x9b\x00r\x00\x00\x00\x00\x01\x9b\x00r\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x0f\n\x00\x06\\\x00\x00\x00\x00\x00\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x00\x04\xb8\x00\x00\x00\x00T'\xad`\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xee\x1e\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00/\xf2/\x80\x00\x00\x00\x00/\xf2/\xf4sshd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00sshd: ok@pts/0 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}\x00\xe3\xf1\x00\x0f\n\x10\x00}\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00A\x04\x00\x01\x03S<\x00\x00\x00C\x00\x00\x00\x00OTHER\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
# ps -ef | grep -i ssh
root 5177558 3670170 0 08:38:58 - 0:00 /usr/sbin/sshd
ok 26673370 26935410 1 10:40:32 - 0:00 sshd: ok@pts/0
root 26935410 5177558 0 10:40:30 - 0:00 sshd: ok [priv]
# locale
LANG=POSIX
LC_COLLATE="POSIX"
LC_CTYPE="POSIX"
LC_MONETARY="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_MESSAGES="POSIX"
LC_ALL=POSIX