2017-10-04 8 views
1

ホームフォルダをループし、パス/home/*/.ssh/authorized_keysが存在する場合は検証します。存在する場合は、そのホームフォルダ内のauthorized_keysファイルをすでに持っているユーザーのための... /。ssh/disabled_authorized_keysファイルを削除したいと思います。ディレクトリをループしてファイルを削除する

私はこれまでこのスクリプトを作成しましたが、authorized_keysを持つユーザーだけでなく、すべてのdisabled_authorized_keysを削除します。

for i in /home/*/.ssh/authorized_keys; 
do ii=`echo $i|awk -F '/' '{print $3}'` ; 
rm /home/$ii/.ssh/disabled_authorized_keys; 
done 

ありがとうございます。 (私はbashのスクリプトで絶対初心者だ!)

答えて

1

これを試してみてください:

for path in /home/*/.ssh/authorized_keys; do 
    rm "$(dirname "$path")"/disabled_authorized_keys 
done 

disabled_authorized_keysが存在しませんが、「クラッシュ」ではないだろう場合には、標準エラー出力に不平を言うでしょう。

More about dirname

0
for dir in /home/*/.ssh; do 
    [[ -e $dir/authorized_keys ]] && rm "$dir/disabled_authorized_keys" 
done 

[[ -e file ]]チェックfileが存在するかどうか。 &&を「if-then」と読んでください。

+0

これは私の最初の試みでした。ただし、bashコンソールで直接実行された場合にのみ機能しますが、.ymlファイルの接頭辞シェルは使用できませんでした。 –

関連する問題