2009-07-29 5 views
0

私はデバッグユーザのエージングを削除するために、サーバにログインしてから "passwd -n 0 -x 99999 -i -1 debug"というコマンドを実行するスクリプトを実行しています。 ユーザーのデバッグが存在しない場合は、ユーザーのデバッグを作成し、パスワードを変更して、上記のコマンドをエージングに実行します。リモートコマンドの出力をキャプチャして、さらにリモートコマンドを発行するにはどうしたらいいですか?

どうすればいいですか?

よろしく、 vasistha

答えて

1

perlfunc(1)から:したがって

   system LIST 
       [...] 
       The return value is the exit status of the program as returned 
       by the "wait" call. To get the actual exit value, shift right 
       by eight (see below). 

my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/); 
if ($ret != 0) { 
    # failure handling code here 
} 
+1

これはどのように質問に答えますか? system()は同じマシン上で何かを実行します。リモートサーバー上では何も実行されません。 –

+0

ええ、私は質問を再読したので、分かりません。私は遠隔地に気付かなかった。 perlスクリプトがサーバーにアップロードされていると思うのは一生懸命ですか? – hhaamu

0

使用puppet

あなたが本当にユーザーが存在するかどうかを確認するためにgetent passwd debugを使用して、手動でそれを行う上で主張する場合:

if [ $(getent passwd debug | wc -l) = 0 ]; then 
    adduser debug 
fi 
0

私がお勧めExpectのようなものを使用します。あなたのインタラクティビティを処理します。サーバーにログインしたり、コマンドを実行したり、出力を検査したり、入力を増やしたりすることができます。たくさんのリモートサーバー管理を行っているなら、それは非常に便利なツールです。それについての記事もありますThe Perl Review号4.2(2008年春)

関連する問題