Как использовать if на csh FreeBSD из теста, если файл старше X минут

Я знаю, что эта ветка устарела. Однако я наткнулся на это, пытаясь сделать то же самое в CentOS 7. Я думаю, что процесс такой же. Мне нужно было изменить каталоги нескольких пользователей с /home/USERна /home/ldap-users/USER.

Сначала создайте файл ldif с изменениями, которые вы хотите внести. Я назвал свой changehomedirs.ldif. Возможно, вам придется изменить свое подразделение в зависимости от того, в какое организационное подразделение вы помещаете своих пользователей. Я позвонил своим людям.

Затем я написал сценарий, по существу перебирающий каждого пользователя LDAP по одному, и использовал sed для замены слова USER в файле changehomedirs.ldifна текущего пользователя в цикле и перенаправления вывода во временный файл с именем tmp..ldif.

Затем я использовал команду ldapmodify, чтобы внести изменения, используя опцию -f, чтобы прочитать нужные изменения из файла tmp.ldif. Пример на скриншоте ниже.

Это всего лишь тестовая система, поэтому пароль не является конфиденциальным.

Home dirs before LDAP modification

How to change a users home directory in LDAP

Home dirs after LDAP modification

1
22.10.2019, 00:03
1 ответ

Вы пишете в комментариях, что знаете:

  1. Как установить bash.
  2. Не изменять оболочку по умолчанию для root.
  3. Bash не устанавливается в /bin и поэтому недоступен из первых рук в однопользовательском режиме.
  4. пользователя toor.

Все вышесказанное правильно и полезно для вас!

Небольшое заблуждение, которое не имеет значения. Для этого был создан пользователь toor.Он имеет uid 0 (, как и root ), поэтому вы можете установить любую оболочку, которая вам нравится, для или .

Еще большее заблуждение состоит в том, что большинство скриптов FreeBSD написано на (t )csh. Они не! Системный скрипт написан на sh. Просто взгляните на /bin/freebsd-versionили/usr/bin/zdiff

Bash не является частью операционной системы FreeBSD. Но система не загрязняется, если ее установить и использовать. Вам даже не придется менять пользовательскую оболочку. Но если вы это сделаете -, просто держите руки root.

Однако есть более серьезные проблемы.

Не пишите скрипты на csh!!!

Несмотря на то, что корневая оболочка по умолчанию (t )csh, вы никогда не должны писать сценарии csh ни в какой системе. Это довольно распространенное мнение, и если вам нужна полная история, пожалуйста, прочитайте ПРОГРАММИРОВАНИЕ CSH СЧИТАЕТСЯ ВРЕДНЫМ

Шебанг

Всякий раз, когда вы пишете сценарий, вы должны начинать первую строку с "шебанг" (подробнее см. в Баш Шебанг). Это сообщает системе, какой интерпретатор использовать при выполнении скрипта. Вы можете без проблем выполнить сценарий bash (или perl/zsh/etc )из csh.

Для лучшей переносимости:

#!/usr/bin/env bash

Это просматривает $PATH, чтобы найти ваше местоположение bash. Для меня это лучшее решение.

Другие выступают за то, чтобы никогда не делать этого, а указывать точное местоположение. Затем это добавляет требование к целевой системе. Либо вы обновите shebang shen, перемещая скрипт -, либо убедитесь, что целевая система имеет ссылку на bash в /bin.

Используйте sh для большей переносимости

Если вам нужна еще лучшая переносимость, используйте для написания сценариев оболочку sh. У него меньше возможностей, чем у bash, но вы можете быть уверены, что он доступен во всех системах POSIX (-, например ).

Сценарии оболочки — это сложно!

Написание правильного сценария оболочки может быть очень трудным.Первый и лучший инструмент, который вам поможет, — это Shellcheck . Вы также можете установить его локально .

Возьмите за привычку проверять свои скрипты -это избавит вас от многих головных болей.

5
27.01.2020, 23:17

Теги

Похожие вопросы