Как я могу перезапустить сеанс ssh после установки nvm?

nvm требует, чтобы пользователь вышел из системы / снова вошел в систему после установки, чтобы изменения вступили в силу. Как я могу разрешить это в недоступной задаче, выполняемой через бродягу. вот что я пробовал:

- name : Install nvm
  shell: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash
  failed_when: False
  register: nvm_installed

- name: Kill open ssh sessions - ansible should log back in on next task
  shell: "ps -ef | grep sshd | grep `whoami` | awk '{print \"kill -9\", $2}' | sh"
  when: nvm_installed | changed
  failed_when: false

- name : Install Node.js v 4.2.x
  command : nvm install v4.2

Но я получаю сообщение об ошибке:

fatal: [default] => SSH Error: ssh_exchange_identification: Connection closed by remote host
    while connecting to 127.0.0.1:2222
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

TASK: [check if rpmforge installed] ******************************************* 
FATAL: no hosts matched or all hosts have already failed -- aborting

команда vagrant ssh теперь также не работает с ошибкой:

ssh_exchange_identification: Connection closed by remote host

Я основывал это на ответе, приведенном здесь - https : //stackoverflow.com/questions/26677064/create-and-use-group-without-restart

Я думаю, может быть, команда kill убивает самого демона sshd?

ps -ef | grep sshd | grep `whoami`
root      2621  1247  0 11:30 ?        00:00:00 sshd: vagrant [priv]
vagrant   2625  2621  0 11:30 ?        00:00:00 sshd: vagrant@notty
root      3232  1247  4 11:34 ?        00:00:00 sshd: vagrant [priv]
vagrant   3235  3232  0 11:34 ?        00:00:00 sshd: vagrant@pts/0
vagrant   3252  3236  0 11:34 pts/0    00:00:00 grep sshd

UPDATE

Я также пробовал следующее : (файл myscript.sh содержит множество функций и запускает / останавливает все пары / ...

Пожалуйста, сначала внимательно прочтите проблему, а затем дайте решение ... ........... .....

у нас есть 3 файла в каталоге

  1. myscript.sh (файл myscript.sh содержит множество функций и запускает / останавливает все пары / одиночные пары из файла serverlist.txt, такие функции, как

для функции start (): его проверка, является ли arg2 парным или одиночным Затем его запускает пара IP.

для функции stop (): она проверяет, является ли arg2 парой или парой одиночных IP-адресов, а затем останавливает его.

для функции rules (): проверяет, является ли arg3 new-rules или same-rules затем скопируйте на него

для функции put_files (): он использует с arg2 и проверяет, является ли arg2 парой или парой с одним IP

like:  ./myscript.sh put_files all-pair
or ./myscript.sh put_files 192.168.20.13-192.168.20.21

2. Файл deployment_function: файл deploymet_function извлекает IP-пару из файла server_list.txt в виде PAIR.

  1. server_list.txt

server_list.txt conatin host ip в форме IP-Pair (Сервер C ++ - сервер базы данных), например это.

192.168.20.13-192.168.20.21
192.168.20.22-192.168.20.34 192.168.20.42-192.168.20.45

Базовый синтаксис моего скрипта:

./ myscript.sh arg1 arg2 arg3

где, arg1 = запуск, остановка или файлы размещения

arg2 = все пары или одна пара IP

arg3 = новые правила или одинаковые правила

Мы выполняем наш сценарий следующим образом:

./ myscript.sh запускает новые правила для всех пар ИЛИ

./ myscript.sh запускает 192.168.20.13-192.168.20.21 новые правила

./ myscript.sh останавливает все пары ИЛИ

./ myscript.sh stop 192.168.20.13-192.168.20.21

Проблема: На самом деле он выполняется нормально, но для выполнения на всех парах IP требуется больше времени, поскольку он выполняется последовательно. сначала он переходит на 192.168.20.21, затем на 192.168.20.13, затем на 192.168.20.34 и 192.168.20.22 ..... при получении ошибки он останавливается на этом сервере. и не выполнять дальше на остальной IP-паре.

Я хочу выполнять myscript на всех серверах параллельно, и при возникновении ошибки вывести список этого сервера и выполнить furtur. Итак, есть ли какое-либо решение, в котором я могу выполнять один и тот же сценарий параллельно без изменения в myscript. так что, пожалуйста, помогите мне найти правильный способ сделать это ....

0
задан 8 January 2016 в 13:37
1 ответ

Вы можете попробовать использовать pdsh (Parallel Distributed Shell - параллельная распределенная оболочка). Pdsh - эффективный многопоточный клиент удаленной оболочки, выполняющий команды на нескольких удаленных хостах параллельно. Хотя он не обновлялся уже довольно давно, он все еще отлично работает, когда я запускаю скрипты на 700 машинах.

pdsh

1
ответ дан 4 December 2019 в 16:44

Теги

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