1

どこでも検索しましたが、問題の解決策が見つからないようです。おそらく、コード関連です。

特定の「ドライバー」が実行されているかどうかを確認するために、DXCMD と呼ばれる Novell プログラムから終了コードをキャッチしようとしています。これは bash では問題ありませんが、より複雑な perl スクリプトを作成する必要があります (たとえば、配列の操作がより簡単になります)。

これはコードです:

#Fill the driverarray with the results from ldapsearch (in ldap syntax)
@driverarray =`ldapsearch -x -Z -D "$username" -w "$password" -b "$IDM" -s sub "ObjectClass=DirXML-Driver" dn | grep ^dn:* | sed 's/^....//' | sed 's/cn=//g;s/dc=//g;s/ou=//;s/,/./g'`;

#iterate through drivers and get the exit code:
foreach $driverdn (@driverarray)
{
    my $cmd = `/opt/novell/eDirectory/bin/dxcmd -user $username -password $password -getstate "$driverdn"`;
    my $driverstatus = $?>>8;
}

私はここまで来ました。コードの残りの部分が記述されます (状態の取得)。しかし、$?>>8コードは常に を返します60。コマンドをシェルに直接コピーして をエコーする$?と、戻りコードは常に2(ドライバーが正常に動作していることを意味します) になります。bash では、コードも機能します (ただし>>8、明らかに はありません)。

エラーコードを調べましたが、60何も見つからないので、私のコードが原因だと思います。

このエラーを修正するにはどうすればよいですか? または、どうすればエラーを追跡できますか? 誰?:)

4

1 に答える 1