Кажется, вычислили метод работы. Избегая $IFS
и не пытаясь работать со всем списком каталогов как со строкой или массивом - работаем над каждым элементом по мере его нахождения. Заменили последний цикл следующим:
find "$DIR" -type f -mtime -2 -name '*.xls*' -exec sh -c '
for file do
# Check to see if we found any files or not
if [ -z "$file" ]; then
echo "$NOBODY" | mutt -s "Data files for $TODAY" $EMAILS
# If we found files, then email them
else
echo "$MBODY" | mutt -s "Data files for $TODAY" -a "$file" -- $EMAILS
fi
done
' sh {} +
где $NOBODY
- другое тело сообщения о том, что не найдено ни одного подходящего файла. Использование "*.xlsx*"
для обеспечения соответствия файлов .xls и .xlsx. Это сработало, но переменные, объявленные выше, не были переданы в цикл. Я разместил каждую из них командой export
, после чего вышеприведенный трюк выполнен. (Если есть более элегантный способ занести переменные в цикл, то я его не нашел. 99% обсуждений циклов и переменных посвящено тому, как вернуть их обратно OUT цикла, а не INTO it)
/etc/profile.d/ каталог содержит сценарии, которые запускаются на user_login. Создайте здесь сценарий для создания профиля bash.
#!/bin/bash
export your environment variables here
or invoke a script that generates bash profile.
Местоположение bash_profile должно находиться в каталоге пользователя, то есть (/home/usr/.bash_profile)
Профиль bash_profile, как правило, представляет собой список экспортируемых переменных среды (например, пути ...)
export VARENV="/path/to/object/"
Поместите .bash_profile
файл в / etc / kele /
. Это в основном каталог шаблона для новых пользовательских профилей. Что-нибудь, в котором находится скопировано в $ Home
, когда создается новый пользователь, и они имеют $ Home
Dir. Это похоже на профиль по умолчанию в Windows.
Чтобы использовать тот же файл для удаленных и локальных пользователей, ищите переменную, что только удаленные пользователи установили и включают в себя тест для этого в функциях / настройках, которые вы хотите применить к ним. Что-то похожее на ssh_client
или ssh_tty
if [[ $SSH_CLIENT ]]; then
setup foo for a remote user
else
setup foo for a local user
fi
Ручная страница Samba для синхронизации учетных записей пользователей с доменом
Один из способов выполнения этой задачи Чтобы разместить скрипт в каталоге /profile.d/, указанный в другом ответе.
Тест на членство в доменах и состоянии пользователя, затем в зависимости от результатов запроса, выполните ваше требование, или если пользователь не соответствует требованию привилегии домена, не создавайте Bash_Profile.
Console Console
$> getent group
Выход
Domain Admins:x:512:root
Domain Users:x:513:jht,lct,ajt,met,vlendecke
Domain Computers:x:553:
... ...
domain-ssh-users:x:55X:harry,mark,john
Тестирование членов группы домена
DOMAIN_GROUPS=`getent group`
USERS_DOMAIN_SSH=`echo $DOMAIN_GROUPS | grep "domain-ssh-users" | sed 's/domain-ssh-users:x:55X://g`
USER=`last | head -n 1`
if [ `echo $DOMAIN_GROUPS | grep $USER` ]
then
#... Do add bash_profile.
else
#... Do not add bash_profile.
exit
fi
Это хаки, но работоспособные ...
Domain_Groups Перечислены группы доменных групп и ассоциированные пользователи. User_domain_ssh Читает domain_groups, полоски все за исключением строки доменных пользователей ssh-ssh, а обработка текста потока прокладывает все, кроме шарнируемых пользователей запятой. Пользователь проверяет последних пользователей в систему и читает абсолютный последний логин.
Тест проверяет строку domain_groups для пользователя.
Пример экспорта пути Samba
if [ $TEST_DOMAIN_USER_ACCESS_LEVEL ]
then
export PATH='/usr/local/samba/bin:\
/usr/local/samba/sbin:$PATH' >> /home/domain/user/.bash_profile && echo OK
else
exit
fi
Profile.D Script
#!/bin/bash
env=`env`
#Store env to string then test for domain membership...
if echo $env grep -q "local.mydomainname.com"
then
user=`cat /var/log/auth | grep LOGIN | grep -o '.\{0,0\}:.\{0,100\} | sed 's/: //g' | grep -Eo '^[^ ]`
# There's a step ^^ missing in this assignment to grab the first line matching a pattern. So here we are checking what user to build for.
echo "Line 1 of ~/.bashrc" >> /home/mydomain/$user
echo "Line 2 of ~/.bashrc" >> /home/mydomain/$user
else
echo "Do not build a ~./bashrc for non-domain users"
fi