Как мне создать скрытый каталог удаленно через скрипт?

Вот текст сценария, который я запускаю ...

for i in `cat ${hostfile}`
        do
        echo "Adding user $username on $i"
        ssh -q $i /usr/bin/sudo /usr/sbin/adduser $username --gecos "$username,,," --disabled-password;
        echo "$username:$password" | /usr/bin/sudo chpasswd;
        /usr/bin/sudo mkdir -p /home/$username/.ssh;
        /usr/bin/sudo touch /home/$username/.ssh/authorized_keys;
        /usr/bin/sudo chmod 600 /home/$username/.ssh/authorized_keys;
        /usr/bin/sudo chmod 700 /home/$username/.ssh;
        /usr/bin/sudo chown -R $username:$username /home/$username
        #ssh -q $i /usr/bin/sudo /usr/sbin/adduser $username --gecos "$username,,," --disabled-password; sudo echo $username:'$password' | chpasswd; /usr/bin/sudo mkdir /home/$username/.ssh; /usr/bin/sudo touch /home/$username/.ssh/authorized_keys; /usr/bin/sudo chmod 600 /home/$username/.ssh/authorized_keys; /usr/bin/sudo chmod 700 /home/$username/.ssh; /usr/bin/sudo chown -R $username:$username /home/$username; adduser $username $group
done

Выполняется, но не создает каталог .ssh.

0
задан 16 May 2019 в 21:53

1 ответ

Ваш скрипт выполняет только одну команду на удаленном сервере:

ssh -q $i /usr/bin/sudo /usr/sbin/adduser $username --gecos "$username,,," --disabled-password;

Все, что после этого выполняется вместо этого на вашем локальном компьютере. Если вы хотите выполнить несколько команд в одном сеансе ssh, вам нужно передать их в ssh как одну команду. Например:

while IFS= read -r  host; do
    echo "Adding user $username on $i"
    ssh -q "$host" "/usr/bin/sudo /usr/sbin/adduser '$username' --gecos '$username,,,' --disabled-password; \
    echo '$username:$password' | /usr/bin/sudo chpasswd; \
    /usr/bin/sudo mkdir -p /home/'$username'/.ssh; \
    /usr/bin/sudo touch /home/'$username'/.ssh/authorized_keys; \
    /usr/bin/sudo chmod 600 /home/'$username'/.ssh/authorized_keys; \
    /usr/bin/sudo chmod 700 /home/'$username'/.ssh; \
    /usr/bin/sudo chown -R '$username:$username' /home/'$username'"           
done < "$hostfile"

Обратите внимание, что все команды находятся в одном и том же кавычке " ". \ в конце строки просто для ясности: они позволяют добавить следующую команду в отдельной строке.

0
ответ дан 16 May 2019 в 21:53

Другие вопросы по тегам:

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