Bash

bash 上每個使用者目錄的文件可用性

  • March 30, 2017

我有一個想法,如何檢查主目錄中每個使用者的“id_rsa.pub”的可用性。但是有些東西不起作用。我的腳本:

#!/bin/bash

users=`ls /home/`

for i in "$users"; do
if [[ -f "/home/$i/.ssh/id_rsa.pub" ]]; then
   echo "All users have this key"
else
   echo "Users $i don't have this key, We need build key for this users"
fi
done

在調試中:

+ [[ -f /home/donovan
valeri
john
roman
colbi
testuser/.ssh/id_rsa.pub ]]

我怎麼看,它需要一個完整的路徑,但不是每個使用者的完整路徑。請幫忙,我做錯了什麼?感謝您的關注。當然,我有一個結果:

Users donovan
valeri
john
roman
colbi
testuser don't have this key, We need build key for this users

引號導致所有使用者名被視為單個字元串:

for i in "$users"; do

刪除引號,它的工作原理:

for i in $users; do

使用者名不包含空格,因此您在這裡應該是安全的。

在腳本中使用這ls /home不是一個好主意。ls是一個人類可讀的列表命令,不打算在腳本中使用。

您可以簡單地創建一個數組並遍歷索引,例如

#!/usr/bin/env bash

users=(/home/*)

for i in "${users[@]}"; do
if [[ -f "$i/.ssh/id_rsa.pub" ]]; then
   echo "All users have this key"
else
   echo "Users $i don't have this key, We need build key for this users"
fi
done

引用自:https://serverfault.com/questions/841484