Wenn es z.B. mit PHP leichter zu realisieren ist kann ich auch das nehmen. Das mit dem "binmode" hört sich aber schonmal gut an.
Wie kann ich den denn nutzen???perldoc binmode
Struppi.
Dazu bräuchte ich aber doch einen Filehandle?
Ich hab ja nur ein Expect-Object.
Evtl. hilft es mal den Code dazu zu sehen (funktioniert eben nur mit Textfiles):
sub get_cops_web
{
my ($file,$user,$password,$logfile,$debug) = @_;
$user=~s/\s*\r*\n*//g;
$password=~s/\s*\r*\n*//g;
$file=~s/\s*\r*\n*//g;
$file=~s/\.\.//g;
$file=~s/^([a-z]+:[\/]+)*(\d+\.\d+\.\d+\.\d+)*\///g;
if ($file!~/^[a-z0-9%?&=\/_-]+\.[a-z0-9%?&=_-]+/i) { print "\nInvalid file!\n"; return 0; }
my $path="/srv/www/htdocs/";
$file=$path.$file;
my $local_tmp="/opt/vpn/CoCA/TEMP/";
my $logfile="/opt/vpn/logs/copsweb_log_".$user;
my $screen_log=0;
$|=1;
my $telnet;
$telnet=&ssh_nipc1($telnet,$user,$password,'',$logfile,$screen_log,$debug);
$telnet->debug($debug);
$telnet->log_file($logfile);
$telnet->log_user(1);
$telnet->log_stdout($screen_log);
my $good = "^[a-zA-Z]+\@nipc1:~>";
my $bad = 'o such file or directory|ould not open';
print $telnet "/usr/bin/php /srv/www/htdocs/cops/coca_overlay.php ".$file."\r\n";
my ($match_num,$error,$match,$before,$after) = $telnet->expect(40,'-re',$good,'-re',$bad);
&close_nipc1($telnet,$user,$password,'',$logfile,$screen_log,$debug);
if ($match=~/$bad/i) { return 0; }
my @before=split(/\r\n/,$before);
my @tmp_file; my $tmp_file_cnt=0; my $line; my $skip_first_line=1;
foreach $line (@before)
{
if ($skip_first_line || $line=~/^\s*[a-zA-Z]+\@nipc1:~>/) { $skip_first_line=0; next; }
$line=~s/\r*\n*//g;
$tmp_file[$tmp_file_cnt++]=$line;
}
my $sequence;
if (!$tmp_file_cnt)
{
$sequence=0;
$tmp_file[0]="Error reading file ".$file."!";
$tmp_file_cnt=1;
}
else
{ $sequence=&create_random_sequence(32); }
open (DESTINATION, ">", $local_tmp."copsweb_".$sequence) or die "Error writing file copsweb_".$sequence."! \n$!\n";
for (my $a=0; $a<$tmp_file_cnt; $a++)
{ print DESTINATION $tmp_file[$a]."\r\n"; }
close (DESTINATION);
return $sequence;
}