Вам просто нужен внутренний l oop. Вот один из способов, который использует xargs
на удаленном сервере, передавая имена пользователей через stdin
. (Также показано: использование printf для генерации списка имен серверов. Но учтите, что для этого необходимо, чтобы имя сервера не включало пробелы или какой-либо другой метасимвол оболочки)
for server in $(printf "user@server%02d.domain.com" $(seq 99)); do
cat users.txt |
ssh -o StrictHostKeyChecking=no $server \
xargs -I{} mkdir "/home/{}/newdir"
done
Это работает, потому что команда, которую вы запускаете на удаленном сервере есть одна команда оболочки, но не совсем очевидно, как расширить ее до более сложной команды. Это также не самый эффективный способ, поскольку вы могли создать три (или столько же) каталогов с одним mkdir
.
Если скрипт, который вы пытаетесь запустить на удаленном сервере, не слишком сложен, Вы можете обернуть его в sh -c
или даже bash -c
(если на удаленных хостах установлено bash и вы хотите воспользоваться его возможностями). Это работает для простых последовательностей команд, но правильное управление кавычками при наличии двухуровневых кавычек может быть настоящей головной болью.