tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1454
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blackbirdthefirst blackbirdthefirst ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Beiträge
    80

    Hallo zusammen.

    Mal wieder stehe ich vor einem Problem !

    Ich habe ein Modul (CONAN.pm) geschrieben für die Verwaltung von ISDN und
    VPN Verbindungen aus einer LDAP Datenbank heraus. Zusätzlich gibt es
    es ein Webinterface das dieses Modul benutzt, dabei werde viele HTML
    Seiten aus Perl heraus generiert.

    Nun Zum Problem.

    Ich beutze z.B in einem kleinen Script wie diesem mein Modul:



    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    !/usr/bin/perl 
     
    use Net::CONAN;
    use Net::LDAP;
     
    #     Verbindung zu LDAP-Server aufbauen.
    #****************************************************************
       $ldap = Net::LDAP->new("localhost");
       $mesg = $ldap->bind("cn=adin, o=Schaal", password=>"amin");
       
    #  LDAP Referenz und Bais Conan übergeben.   
       $retcode = CONAN->useLDAP(ldap=>$ldap,base=>"o=Schaal");
       
       # Nach Fehlern prüfen.
       if_error($retcode);
     
    #     Neues Verbindungsdaten-Objekt erstellen 
    #****************************************************************
       $retcode = CONAN->new("isdn","verbindungsname","kunde");
     
       # Nach Fehlern prüfen.
       $connOBJ = if_error($retcode);


    Die Methode aus dem CONAN Modul sieht wie folgt aus. Die Aufgabe ist
    lediglich zum testen eine SFTP Verbindung aufzubauen.


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    sub set_onHost {
     
       my $self = shift;
       my %param = @_;
       
         
       if( $self->{type} eq "isdn" ){
          print "ok1";   
       
          $sftp = Net::SFTP->new("localhost", debug=>1, user=>"root", password=>"1983_sv_MA");
          
          print "ok2";
       
            
       }elsif( $self->{type} eq "vpn"){
          .
          .   
       }
    }


    Das ergebniss ist eine korret aufgebaut SFTP Verbindung mit der ich dann ganz normal
    Dateie kopieren kann etc.

    Jetzt aber endlich mal das eigentliche Problem:

    Wenn ich das selbe Script wie oben in einem CGI Script benutze funktioniert es nicht
    und das zweite "OK2" bekomme ich nicht zu gesicht (das erste aber schon.)

    Zur vollständigkeit das CGI Script:



    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    
    #!/usr/bin/perl 
     
     
    #***************************************************************#
    #                       INITIALISIERUNG                         #
    #***************************************************************#
     
     
    #                   Benötigte Module laden.
    #****************************************************************
    use CGI;
    use Net::CONAN;
    use Net::CONAN::Search;
    use Net::LDAP;
     
     
    #           Neues CGI Objekt erstellen und Vorbereiten.
    #****************************************************************
    $q = new CGI;
     
    # HTML Header hinzufügen.
    print $q->header;
     
    # HTML Document beginnen.
    print $q->start_html(-name=>'listConnection');
     
     
    %auth_ldap = $q->cookie(-name=>'auth_ldap');
     
    if(!defined %auth_ldap){
       print $q->h3("Es besteht noch keine LDAP Verbindung aufgebaut");
       exit;
    }
     
    #     Verbindung zu LDAP-Server aufbauen und Conan übergeben. 
    #****************************************************************
    $ldap = Net::LDAP->new("$auth_ldap{host}");
    $mesg = $ldap->bind("$auth_ldap{user}", password=>"$auth_ldap{pass}");
     
    #Conan die neue Verbindung und Suchbasis übergeben.
    $retcode = CONAN->useLDAP(ldap=>$ldap,base=>"o=Schaal");
     
    #Nach Fehlern prüfen.
    if_error($retcode,$q);
     
     
    #      Auslesen der vom HTTP-Client übergebenen Variablen.
    #****************************************************************
     
    # Für Baissuiche nötige Variablen auslesen.
    $name     = $q->param('name')    ;
    $customer = $q->param('customer');
    $type     = $q->param('type')    ;
    $conn_nr  = $q->param('choose')  ;
     
     
    #***************************************************************#
    #                       HAUPTPROGRAMM                           #
    #***************************************************************#
     
    #     Neues Verbindungsdaten-Objekt erstellen 
    #****************************************************************
    $ret = CONAN->new($type,$name,$customer);
     
    # Nach Fehlern prüfen.
    $connOBJ = if_error($ret);
       
     
    $connOBJ->set_onHost(host=>"localhost", user=>"foo", password=>"xxx");
       
    #        Anzeigen der Optionen für ein Verbindung 
    #****************************************************************
    $return = $connOBJ->get_option(); 
    %result = $return->result;
     
     
    #          Ausgeben der Tabelle mit den Optionen 
    #****************************************************************
     
    # Tabele einleiten und Überschrift definieren  
    print   qq{<table rules=none border valign="top" align="center" hight=100% width=100%>
             <tr>
                <th colspan=2>
                   <h3><br>Auflistung der Optionen f&uuml;r Nr.: $conn_nr<br></h3>
                </th>
             </tr>};
     
    print qq{<form action="/cgi-bin/modify.pl" method="POST" target="right">};
                
    foreach $type (keys %result) {
       # Optionstyp auslesen.
       $href = $result{$type};
          
       print qq{<tr>
                   <td bgcolor=#E0E0E0 colspan=2>
                      Optionen f&uuml;r $type
                   </td>
                </tr>};
       
       # Für jedes Attribute-Werte Paar zwei Tabellenspalten in einer
       # Tabellenzeile ausgeben .         
       foreach (keys %$href){
          $input = qq{<input name="$_" value="$result{$type}->{$_}"> };
          print "<tr>
                    <td>$_</td>
                    <td>$input</td>
                 </tr>";
       }
          # Leere Tabellenzeile als Trennung zwischen Optionstypen.
          print "<tr ><td colspan=2>&#160</td></tr>";
       }
     
    # Tabelle beenden.
    print "</table>";
     
     
    print qq{<table align="center">
             <tr>
                <td><input type="submit" name="submit" value="OK" align="right"></td>
             </tr>
             
             <input type="hidden" name="name" value="$name">
             <input type="hidden" name="customer" value="$customer">
             <input type="hidden" name="type" value="$type">
             </form>
             </table>};   
     
    # HTML Dokument abschließen.
     
     
    print $q->end_html;
     
     
     
       
    #***************************************************************#
    #                       SUBROUTINEN                             #
    #***************************************************************#
     
     
    sub if_error (){
    #Prüft ob in Conan ein Fehler passiert ist. 
    #Es muss 1. Das zu testende CONAN::Retcode Objekt
    #und 2.das zu benutzende CGI Objekt übergeben werden.
    #****************************************************************
       
       my $to_test = shift;   
       my $cgi_out = shift;
       
       # - Returncode Prüfen und bei Fehler Programm verlassen 
       if ($to_test->code != 0) {
          print $cgi_out-> h2( $to_test->error );
          exit;
       }
       return $to_test->result();   
    }
     
    exit;


    Ich hoffe es kann mir jemand einen Tip geben.
     

  2. #2
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    *) Fange Fehlermeldungen ab und poste sie hier - vielleicht mal bei dem Verbindungsaufbau Net::SFTP->new() or die $!
    *) verstecke das Passwort, das im Conan-Modul eingetragen ist vor der Öffentlichkeit
     

Ähnliche Themen

  1. Perl Modul YAPE::Regex
    Von Binio im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 04.03.08, 23:54
  2. Perl/tk modul
    Von marcust im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 4
    Letzter Beitrag: 15.10.03, 18:52
  3. Perl-Modul MIME::TOOLS für Linux
    Von AndreasStevens im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 04.07.03, 14:17
  4. PERL Script Windows > UNIX Problem
    Von SirNeo im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 09.07.02, 15:24
  5. (perl) problem mit script (+ rename)
    Von stephan01 im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 6
    Letzter Beitrag: 29.03.02, 17:11