Я могу получить оба списка ( /etc/passwd и /home ), но как написать что-то вроде чтения строки /etc/passwd, проанализировать домашний каталог, а затем найти его в /home . Если его нет, скиньте ошибку, если есть, идите дальше.
/etc/passwd список домашних каталогов для пользователей
cut -d":" -f6 /etc/passwd | grep home | sort
список пользователей из /home
ls -1 /home | (while read line; do echo "/home/"$line; done)
Может быть, сразу вывести первую команду в файл, затем прочитать каждую строку в команде поиска и... или проверить с помощью
if [ -d "$DIRECTORY" ]; then
echo "directory found for user that doesn't exist"
fi
Как теперь все это собрать...
РЕДАКТИРОВАТЬ: у isedev было именно то, что мне было нужно. Возможно, я неправильно сформулировал исходное сообщение... мы очищали пользователей, но не очищали их домашний каталог. Поэтому я хочу знать, какие каталоги /home все еще существуют, в которых нет записей /etc/passwd.
это то, что работало на Т
for name in /home/*; do
if [ -d "$name" ]; then
cut -d':' -f6 /etc/passwd | egrep -q "^$name$"
if [ $? -ne 0 ]; then
echo "directory $name does not correspond to a valid user"
fi
fi
done
с этого момента мы будем работать
userdel -r login
/root
- person Marc B   schedule 07.10.2014/home
, на которые претендует более одной записи в/etc/passwd
? - person Jonathan Leffler   schedule 07.10.2014