2017-03-03 7 views
0

monitornsuaccounts.shというスクリプトを作成しました。このスクリプトは、出力ファイルをuseraccountstatus.logに追加する必要があります。 useraccountstatus.logは/ var/local/nsu/logs /ディレクトリにあります。グループ名、ユーザ名、最後のログインlinuxでユーザアカウントを管理

このスクリプトの出力には、すべてのユーザー名と、各ユーザー名に関する次の情報(ユーザー名、最終ログイン、ユーザーホームディレクトリおよび関連グループ)が記載されている必要があります。各情報の列があることが望ましい。

ユーザー名に使用するコマンドは、sudo cat/etc/passwdです。 grep '/ home'と入力します。最後に、各ユーザーの最後のログインを見つけることです。グループとは、各ユーザーのグループを検索することです。コマンドを実行すると、出力ファイルには、すべてのユーザーではなく現在のユーザーに必要なデータのみが表示されます。誰もが持っている勧告は非常に高く評価されるでしょう。

#!/bin/bash 
usernames=sudo cat /etc/passwd | grep ‘/home’ 
echo “$usernames” > /home/daniel/names.txt 
mlast=$(cat names.txt | xargs -n1 last) 
mgroup=$(cat names.txt | xargs -n1 groups) 
cat names.txt > /var/local/nsu/logs/useraccountstatus.log 
echo “$mlast” >>/var/local/nsu/logs/useraccountstatus.log 
echo “$mgroup” >>/var/local/nsu/logs/useraccountstatus.log 

答えて

0

スクリプトには多くの問題があります。

  1. ユーザーの定義。これがあなたが望むものだと確信していますか?たとえば、rootは/ homeの下にディレクトリを持っていません。

  2. 引用符をご覧ください。 cat /etc/passwd | grep ‘/home’は何も返しませんが、cat /etc/passwd | grep 'home'は/ etc/passwdにスタンザのリストを返します。

  3. おそらくスタンザのリストではなく、ユーザー名の一覧がほしいでしょう。 sudo cat /etc/passwd

    cat /etc/passwd | grep 'home' | sed 's/:.*//' 
    
  4. なぜsudoの線に沿って何か?あなたの割り当てで

  5. ルック

    usernames=sudo cat /etc/passwd | grep ‘/home’ 
    

    でこれは意味がありません。あなたは

    usernames=`sudo cat /etc/passwd | grep '/home'| sed 's/:.*//'` 
    

をしようとする可能性があり、それは、スクリプトの最初の一行だけです。

スクリプトが意図したとおりに動作しない場合は、デバッグを行う必要があります。最初の質問は、特にあなたが経験の浅い場合、「私が書いたコマンドは、私が期待した結果を出すのですか?あなたのケースでは、あなたはcat /etc/passwd | grep ‘/home’を試してみて、期待通りの結果を得られていないことが分かりました。正しい引用符でも、あなたは期待したものではないスタンザのリストを取得します。あなたは/home/daniel/names.txtを見ましたが、あなたが望むファイルの内容でしたか?私はそう思わない:それは空だった。

だけで簡単にヒントは、(backticsに反対するかもしれないいくつかの問題とpepoleはまだありますが)あなたがこれを磨くことになるでしょう

#!/bin/bash 
usernames=`sudo cat /etc/passwd | grep '/home'| sed 's/:.*//'` 
mlast=`echo $usernames | xargs -n1 last` 
mgroup=`echo $usernames| xargs -n1 groups` 
echo $usernames > /var/local/nsu/logs/useraccountstatus.log 
echo "$mlast" >>/var/local/nsu/logs/useraccountstatus.log 
echo "$mgroup" >>/var/local/nsu/logs/useraccountstatus.log 

あなたは正しい方向に始めるとより多くの出力を作るために有用。

関連する問題