Выполнить множественное сравнение между локальными и удаленные файлы

Большая часть этого может быть достигнута с помощью одной команды и, следовательно, может можно поместить в псевдоним:

ssh -t server1 sudo -u user2 ssh server2

Однако сменить каталог сложнее. Если вы можете гарантировать, что user2 всегда должен попадать в ваш целевой каталог, вы можете поместить cd dirOnServer2 в свой .profile (или .bash_profile ]) следующим образом:

cd dirOnServer2

Имейте в виду, что смена каталога произойдет только в том случае, если будет получен .profile , и это происходит только для интерактивной оболочки.

1
04.07.2017, 19:46
2 ответа

Один из способов — настроить доступ без пароля (аутентификацию с открытым ключом ), другой — мультиплексировать соединения. Создайте файл конфигурации в ~/.ssh/configсо следующим:

Host remote_host
  User user
  ControlPath ~/.ssh/controlmasters/%r@%h:%p
  ControlMaster auto
  ControlPersist 5m

Создать каталог~/.ssh/controlmasters/:

mkdir -m 700 ~/.ssh/controlmasters/

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

2
27.01.2020, 23:33

Если вам не разрешено создавать доступ без пароля с помощью :ssh-keygen user@remotehost, вы можете установить обычный инструмент expect,и создайте скрипт с именемpassexpect:

#!/usr/bin/expect -f

set timeout 20
set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

log_user 0
eval spawn $cmd
expect "assword:"
send "$password\r";
interact

затем в основном сценарии оболочки вы можете прочитать пароль один раз:

printf "ssh password:" >&2; read -s pass; printf "\n">&2

и используйте его в любой команде ssh:

passexpect $pass ssh user@remotehost command_for_remote_host

или для ваших целей полный сценарий будет:

#/usr/bin/env bash
printf "ssh password:" >&2; read -s pass; printf "\n">&2
./passexpect $pass ssh user@remotehost cat remoteF1.txt | diff - localF1.txt
./passexpect $pass ssh user@remotehost cat remoteF2.txt | diff - localF2.txt
0
27.01.2020, 23:33

Теги

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