Я новый системный администратор, который учится моей роли. У меня есть сценарий 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'