#1 15.01.2019 11:42:29

Geringdingdingdingdingdin
Gast

Perl - open(BLOCKDEVICE, "</dev/sda") enthält nur Nullen o.O

Ich möchte innerhalb eines Perl-Skriptes meinen GPT-Header auslesen:

#!/usr/bin/perl

open(BLOCKDEVICE, "</dev/sda") or die;

# überspringe den protective mbr
seek(BLOCKDEVICE, 512, 0);

# lese und schreibe je 1 Byte des Filehandlers 8 mal in folge
for (my $i = 0; $i < 8; $i++) {
  $byte = getc(BLOCKDEVICE);
  printf(" %2x", ord($sc));
}

close(BLOCKDEVICE);
print("\n");

liefert:

# perl script.pl
  0  0  0  0  0  0  0  0

, was aber eigentlich nicht sein dürfte, denn laut dd und Wikipedia ist die Signatur meines GPT-Headers völlig in Ordnung:

# dd if=/dev/sda bs=1c skip=512 count=8 2>/dev/null | od -An -tx1
 45 46 49 20 50 41 52 54

Hat jemand eine Idee, was ich in dem Perl Skript falsch mache?

#2 15.01.2019 11:49:18

Geringdingdingdingdingdin
Gast

Re: Perl - open(BLOCKDEVICE, "</dev/sda") enthält nur Nullen o.O

Ah sorry, habe es gerade selbst gesehen, ich habe die falsche Variable ($sc) geschrieben *face palm*
Wenn ich 2 mal $byte verwende funktioniert es:

#!/usr/bin/perl

open(BLOCKDEVICE, "</dev/sda") or die;

# überspringe den protective mbr
seek(BLOCKDEVICE, 512, 0);

# lese und schreibe je 1 Byte des Filehandlers 8 mal in folge
for (my $i = 0; $i < 8; $i++) {
  $byte = getc(BLOCKDEVICE);
  printf(" %2x", ord($byte));
}

close(BLOCKDEVICE);
print("\n");
# perl script.pl
 45 46 49 20 50 41 52 54

#3 16.01.2019 18:37:10

Gerry_Ghetto
Mitglied

Re: Perl - open(BLOCKDEVICE, "</dev/sda") enthält nur Nullen o.O

Mit

use warnings;
# use strict; # schadet sicher auch nicht

entwickelt es sich leichter.

Offline

#4 20.01.2019 23:24:22

Geringdingdingdingdingdin
Gast

Re: Perl - open(BLOCKDEVICE, "</dev/sda") enthält nur Nullen o.O

Gerry_Ghetto schrieb:

Mit

use warnings;
# use strict; # schadet sicher auch nicht

entwickelt es sich leichter.

Danke smile

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums