Я рекомендовал бы echo
луг копия строки, когда загрузка перестала работать, вместо того, чтобы рассмотреть имена файлов путем парсинга каждой строки в файле впоследствии:
[[ -f $1 ]] || { echo "$1 not found" >&2; exit 1; }
while read -r line; do
$line || echo "$line" >> stillneed
done < "$1"
Это было бы более эффективным, и также означает, что Вы не должны волноваться ни о каких нечетных именах файлов в будущем (например, с пробелами в.)
Если Вы хотите улучшить свой существующий метод, Вы могли бы использовать стандартное расширение параметра:
for f; do
while read -r line; do
for item in $line; do
[[ $item = out_fname=* ]] || continue
[[ -f ${item#out_fname=} ]] || echo "$line"
break # assuming one fname per line
done
done < "$f"
done > stillneed
.. но рассмотрите то, что происходит с: out_fname='foo bar.ext'
. Кроме того, примите во внимание, что это проверяет каждую строку после события, когда мы, возможно, просто проверили, работала ли команда в то время, когда мы выполнили его.
Открытие stillneed
однажды для целого цикла более эффективно; я не сделал этого в первом отрывке, поскольку мы, скорее всего, захотим видеть вывод от команд загрузки. Здесь существуют только тесты, никакие внешние команды, работающие, таким образом, имеет смысл открывать файл однажды. (Отметьте использование >
усечет файл в запуске; я использовал for f
позволить больше чем один входной файл как позиционные параметры: добавление того же выше должно быть легким при необходимости в нем.)
Одна вещь, которую я должен подчеркнуть, заключает в кавычки: echo "$line"
очень отличается от echo $line
. В целом заключите все расширения параметра в кавычки (это включает переменные), если Вы не знаете наверняка, что хотите, чтобы разделение поля произошло.
Когда я устанавливаю сервер Samba, пароли получают хранилище в/etc/shadow.
Где Samba 4 хранит пароли пользователей?
В собственном (интегрированном) LDAP-сервере в атрибуте unicodePwd
. Этот атрибут недоступен через LDAP (например, ldapsearch
его не показывает). Но вы можете использовать, например, ldbsearch
для просмотра атрибута.
Как я могу импортировать хэши паролей из Samba 3 в Samba 4?
Вы должны использовать Samba Classic Upgrade, см. вики-сайт samba для более подробной информации.
Как я могу хранить пароли Samba 4 в атрибуте LDAP?
Вам не следует изменять атрибут LDAP напрямую. Вы можете использовать пароль пользователя samba-tool
для установки нового пароля для пользователя. Для переноса вы действительно должны использовать классическое обновление, которое хорошо работает с LDAP-бэкэндом Samba 3.