Назад | Перейти на главную страницу

Системный администратор для новичков - Поддержка сценариев Bash

Я новый системный администратор, который учится моей роли. У меня есть сценарий bash, с которым я не могу работать. Это всего лишь тестовый скрипт, так как он мой первый, поэтому я знаю, что устанавливать authorized_keys на 777 неразумно, но я просто делаю это, чтобы проверить, работает ли мой скрипт сейчас.

Я использую LDAP с паролями, поэтому SSH на удаленном устройстве с ключами не идеален, поэтому я использую ssh pass.

Этот код работает до useradd, затем он не использует mkdir .ssh, не касается / не создает authorized_keys и не меняет права доступа к файлу.

Зачем?

#!/bin/bash -x


username="test"


echo Enter server IP:
read server
sshpass -p randompassword ssh myusername@$server sudo -i 'useradd test1;
echo $username user added, press any key to continue;
read;
sudo -i;
mkdir /home/test1/.ssh;
cd /home/test1/.ssh;
touch authorized_keys;
chmod 777 authorized_keys'

Я, вероятно, что-то не понимаю в сценариях bash правильно, но все эти команды необходимо запускать на удаленном компьютере.

Если вы хотите «управлять несколькими серверами», сценарии Bash - неправильный подход, поскольку вы сами признали, что вы новичок, изучите CMS, такую ​​как Puppet, управляйте своими серверами с помощью настоящей системы управления конфигурацией. Подумайте о своем подходе к управлению системами, не спрашивайте себя: «Как мне исправить эту небольшую проблему / задачу, подумайте, как я могу управлять ВСЕМИ своими серверами из одного места и обеспечить единообразную конфигурацию на всех из них.

Подумайте об этом в этом контексте, допустим, вы заставили этот сценарий работать, затем вы решили, что хотите удалить учетную запись «test 1», теперь вам нужно написать другой сценарий. тогда как в CMS вы можете добавить пользователя с помощью:

  @user {"test1":
    ensure      => present,
    #password    => 'hashed_value'
    comment     => "Test User",
    groups      => "wheel",
    managehome  => true,
  }

Затем, если вы решите удалить пользователя позже, измените конфигурацию на:

 @user {"test1":
    ensure      => absent,
  } 

Позвоните или «реализуйте» этот ресурс на всех серверах, которые вы хотите, и все готово, выпейте дополнительную чашку кофе и похлопайте себя по спине за сокращение времени на выполнение задачи на 95%. Сохраните все свои конфигурации в Subversion или какой-либо другой системе контроля версий и делайте заметки о том, почему вы это изменили, кто вас просил это сделать и когда. Итак, когда ваш босс спросит, почему вы удалили учетную запись test1 на всех серверах, вы можете посмотреть свою заметку и сказать, потому что вы просили меня об этом в электронном письме от 15 марта. Работайте умно, а не усердно.

Удачи.

Удалите строку «sudo -i» и ставьте только «sudo» перед каждой необходимой командой.

Пример:

sudo mkdir /home/test1/.ssh;
cd /home/test1/.ssh;
sudo touch authorized_keys;
sudo chmod 777 authorized_keys'