Schrift
[thread]12342[/thread]

Shell Befehl Echo

Leser: 2


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
c4
 2008-08-12 00:10
#113373 #113373
User since
2008-08-10
14 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use Shell qw(echo);

sub copyUserDataToFile
{
    #-----------------------------------------------------------------            
    my $UserPass = "";
    my $UserFile = "$UserPath/passwd";
    if ( -e $UserFile ) {
        open FILE, "< $UserFile", or die "ERRoR: $!";
        $UserPass = <FILE>;
        close FILE;
    }
    #-----------------------------------------------------------------            
    echo "$UserPass >> $backupPasswdFile";
}


Das Problem ist das dieses echo nicht das Password in das BackupFile schreibt... $UserPass ist definitv gefüllt mit dem aktuell ausgelesenem Password.

probiere ich es so:
Code (perl): (dl )
echo "hallo >> $backupPasswdFile";


Steht das Hallo danach im BackupFile.
Weiss jemand was ich da falsch mache?

grüSSe
MatthiasW
 2008-08-12 00:56
#113374 #113374
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Wieso möchtest du denn überhaupt echo verwenden um die Daten in die Datei zu schreiben?
open(...);print...;close(...); würds doch auch tun.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
defun
 2008-08-12 05:09
#113379 #113379
User since
2008-07-18
28 Artikel
BenutzerIn
[default_avatar]
Mach doch einfach mal:
Code (perl): (dl )
print "'$UserPass', '$backupPasswdFile'\n";

Dann bekommst du eine klare Vorstellung davon, inwiefern $UserPass Probleme macht.

Davon abgesehen würde ich auch die Datei in Perl öffnen und ein print darauf ausführen. Du kannst in Perl auch die >>-Notation verwenden:
Code (perl): (dl )
open(APPENDFILE, ">>", $backupPasswdFile) or die "eRRoR jUst t00 l33t: $!\n";
c4
 2008-08-12 14:09
#113384 #113384
User since
2008-08-10
14 Artikel
BenutzerIn
[default_avatar]
Ja klar Matthias, habs mittlerweile so umgesetzt, aber mich hat halt interessiert warums ned geht.

Defun das habe ich natürlich schon gemacht sonst könnte ich natürlich nicht behaupten das die variable definitiv gefüllt ist.

Code (perl): (dl )
print "'$UserPass', '$backupPasswdFile'\n";

Erzeugt folgende Ausgabe:
'dfgdfg:NtDWip/SpFhjQ ', '/path/to/passwd'

Defun aber diese notation mit den drei Argumenten um nen File zu handeln gefällt mir gut! Die habe ich sofort übernommen *gg* Vielen Dank hierfür! Allerdings habe ich sie etwas meinem Vorhaben angepasst und mache.

Code (perl): (dl )
open(my $UserPass,'>>',$UserPasswdFile);


Hat den Vorteil das nach verlassen der Subroutine (my $UserPass) zerstört ist und bei erneutem Aufruf da nicht irgendwelche Daten.Leichen drin rummschwimmen. :-))

grüSSe
Gast Gast
 2008-08-12 14:50
#113386 #113386
Zu echo:

Bedenke, dass der übergebe String in einer Shell interpretiert wird. So schen wie ":" umd "/" werden da leicht missverstanden. Du musst den zu schreibenden String in Anführungszeichen setzen.
c4
 2008-08-12 16:02
#113395 #113395
User since
2008-08-10
14 Artikel
BenutzerIn
[default_avatar]
mmhh, najo ich hab schon alle möglichen kombos durch. denke ich jedenfalls. Wenn jemand noch was anderes einfällt, bin ich gerne bereit es auszuprobieren.

Code (perl): (dl )
1
2
3
4
5
echo "$line >> $squidPasswdFile";      #funtz nicht
echo "'$line >> $squidPasswdFile'";     #funtz nicht
echo "'$line' >> $squidPasswdFile";     #funtz nicht
echo "'$line' '>>' $squidPasswdFile";   #funtz nicht
echo "'$line' '>>' '$squidPasswdFile'";  #funtz nicht


Wie gesagt ich habe das Problem bereits anders gelöst. Mich interessiert nur warum das mit dem echo nicht klappen will. is doch völlig WEIRD!
LanX-
 2008-08-12 16:11
#113396 #113396
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
This package is included as a show case, illustrating a few Perl features. It shouldn't be used for production programs.CPAN:shell
c4
 2008-08-12 16:39
#113398 #113398
User since
2008-08-10
14 Artikel
BenutzerIn
[default_avatar]
Heisst das ich soll aufgeben weil ich diese befehle eigentlich nicht nutzen soll für solche dinge, sondern die Perl Syntax? Wäre sehr schade weil ich durch son befehl nen 3 zeiler zu nem einzeiler machen kann!
murphy
 2008-08-12 17:13
#113403 #113403
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@c4: Ich denke, man sollte diesen Befehl schon deswegen nicht verwenden, weil er ziemlich unsicher aussieht. Wenn in dem Passwort zum Beispiel '>' vorkommt, können gewiss böse Dinge passieren...
When C++ is your hammer, every problem looks like your thumb.
LanX-
 2008-08-12 17:22
#113405 #113405
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
c4+2008-08-12 14:39:50--
Wäre sehr schade weil ich durch son befehl nen 3 zeiler zu nem einzeiler machen kann!


niemand hindert dich ne subroutinen echo() zu schreiben wenns denn lohnt, bedenke dass du schließlich auch die Zeile use shell schreiben musst, und du bekommst so vernünftige Fehlermeldungen.

Im übrigen vermute ich mal du hast oben die Variable mit der Ausgabedatei $backupPasswdFile verschludert, zumindest stehts nicht in deinem Beispielcode.

Mit Perlmitteln hättest du jetzt aber ne sprechende Fehlermeldung und wir bräuchten den Thread nicht.
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2008-08-12 00:10.