Problème avec une commande perl
Résolu/Fermé
steph
-
19 mars 2008 à 00:50
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 19 mars 2008 à 13:39
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 19 mars 2008 à 13:39
A voir également:
- Problème avec une commande perl
- Invite de commande - Guide
- Commande terminal mac - Guide
- Diskpart commande - Guide
- Commande dism - Guide
- Commande sfc scannow - Guide
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 mars 2008 à 07:15
19 mars 2008 à 07:15
Salut,
chop supprime le dernier caractère de la chaîne tandis que chomp supprime le caractère de saut de ligne \n
mieux vaux utiliser chomp
Les apostrophes simples `commande` , permettent de capturer le résultat d'une commande système
Peut être qu'il faut utiliser la fonction system() dans ton cas
Voici un exemple
Pour le début de script tu peux, et c'est même conseiller d'utliser
#!/usr/bin/perl
use strict; use warnings;
ce qui donne dans ton cas
Exemple 1 (avec les apostrophes simples ou l'opérateur qx// )
Exemple 2 avec system (si tu veux seulement capturer utlise qx)
chop supprime le dernier caractère de la chaîne tandis que chomp supprime le caractère de saut de ligne \n
mieux vaux utiliser chomp
Les apostrophes simples `commande` , permettent de capturer le résultat d'une commande système
Peut être qu'il faut utiliser la fonction system() dans ton cas
Voici un exemple
lami20j@debian:~$ echo salut salut lami20j@debian:~$ perl -e '$var = `echo salut`; print $var' salut lami20j@debian:~$ perl -e 'system("echo salut")' salut lami20j@debian:~$Il sera peut être bien de nous dire ce que tu veux faire puisque exécuter un fdisk avec un script perl, je ne vois pas .....
Pour le début de script tu peux, et c'est même conseiller d'utliser
#!/usr/bin/perl
use strict; use warnings;
ce qui donne dans ton cas
#!/usr/bin/perl use strict; use warnings; print "Veuillez indiquer le disque.\n\n"; chomp (my $disk = <STDIN>);
Exemple 1 (avec les apostrophes simples ou l'opérateur qx// )
lami20j@debian:~$ cat fdisk.pl #!/usr/bin/perl use strict; use warnings; print "Veuillez indiquer le disque.\n\n"; chomp (my $disk = <STDIN>); my $var = qx{/sbin/fdisk -l /dev/$disk}; #qx{commande} ext equivalent de `commande` print "$var"; __END__ lami20j@debian:~$ sudo perl fdisk.pl Veuillez indiquer le disque. hda Disk /dev/hda: 164.6 GB, 164696555520 bytes 255 heads, 63 sectors/track, 20023 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 1276 10249438+ 7 HPFS/NTFS /dev/hda2 1277 13837 100896232+ f W95 Ext'd (LBA) /dev/hda5 1277 8925 61440561 7 HPFS/NTFS /dev/hda6 8926 8974 393561 82 Linux swap / Solaris /dev/hda7 8975 10190 9767488+ 83 Linux /dev/hda8 10191 13837 29294496 83 Linux lami20j@debian:~$
Exemple 2 avec system (si tu veux seulement capturer utlise qx)
lami20j@debian:~$ cat fdisk2.pl #!/usr/bin/perl use strict; use warnings; print "Veuillez indiquer le disque.\n\n"; chomp (my $disk = <STDIN>); system("/sbin/fdisk", "-l", "/dev/$disk"); __END__ lami20j@debian:~$ sudo perl fdisk2.pl Veuillez indiquer le disque. hda Disk /dev/hda: 164.6 GB, 164696555520 bytes 255 heads, 63 sectors/track, 20023 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 1276 10249438+ 7 HPFS/NTFS /dev/hda2 1277 13837 100896232+ f W95 Ext'd (LBA) /dev/hda5 1277 8925 61440561 7 HPFS/NTFS /dev/hda6 8926 8974 393561 82 Linux swap / Solaris /dev/hda7 8975 10190 9767488+ 83 Linux /dev/hda8 10191 13837 29294496 83 Linux lami20j@debian:~$
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 mars 2008 à 11:07
19 mars 2008 à 11:07
Dans ton projet, tu dois créer un menu qui ensuite permettra à ton script d'utiliser des utilitaires système?
Peut être que si tu diras en quoi consiste ton projet, ça sera plus facile pour t'aider.
Peut être que si tu diras en quoi consiste ton projet, ça sera plus facile pour t'aider.
merci pour toutes vos réponse mais je viens de trouver;)
il suffit d'applique system " " et d'y insérer la commande entre les guillemet.
#!/usr/bin/perl -w
use strict; use warnings;
print "Veuillez indiquer le disque sur lequel vous souhaitez appliquer l'utilitaire de partitionnement.\n\n";
chomp (my $disk = <STDIN>);
system "fdisk /dev/$disk";
merci et si j'ai pu aider quelqu'un ;);)
il suffit d'applique system " " et d'y insérer la commande entre les guillemet.
#!/usr/bin/perl -w
use strict; use warnings;
print "Veuillez indiquer le disque sur lequel vous souhaitez appliquer l'utilitaire de partitionnement.\n\n";
chomp (my $disk = <STDIN>);
system "fdisk /dev/$disk";
merci et si j'ai pu aider quelqu'un ;);)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 mars 2008 à 13:39
19 mars 2008 à 13:39
Re,
mais je viens de trouver;)
t'avais la solution sous ton nez Peut être qu'il faut utiliser la fonction system() dans ton cas
mais je viens de trouver;)
t'avais la solution sous ton nez Peut être qu'il faut utiliser la fonction system() dans ton cas
19 mars 2008 à 10:20
et ceci dans un script perl d'où ma rédaction.
#!/usr/bin/perl -w
use strict; use warnings;
print "Veuillez indiquer le disque sur lequel vous souhaitez appliquer l'utilitaire de partitionnement.\n\n";
chomp (my $disk = <STDIN>);
`fdisk /dev/$disk`;
normalement apres que l'utilisateur rentre le disque l'utilitaire suivant devrait être lancé
Commande (m pour l'aide): m
Commande action
a bascule le fanion d'amorce
b éditer l'étiquette BSD du disque
c basculer le fanion de compatibilité DOS
d détruire la partition
l lister les types de partitions connues
m afficher ce menu
n ajouter une nouvelle partition
o créer une nouvelle table vide de partitions DOS
p afficher la table de partitions
q quitter sans faire de sauvegarde
s créer une nouvelle étiquette vide pour disque de type Sun
t modifier l'identificateur de la partition système
u modifier l'affichage et la saisie des unités
v vérifier la table de partitions
w écrire la table sur le disque et quitter
x fonctionnalité additionnelle (pour experts seulement)
merci,