Автор этих строк для работы использует как стационарный компьютер, так и ноутбук. В какой-то момент встала задача: поддерживать актуальным список известных ssh-хостов на обеих машинах, плюс к тому хотелось иметь одинаковый по содержанию файл authorized_keys, поскольку это существенно упрощает работу.
Ручная синхронизация занимает длительное время и не очень удобна, поэтому было приятно решение автоматизировать синхронизацию с помощью скрипта. Далее будет показано как именно это было сделано.
Вобщем-то сам скрипт не сложен и его работа становится очевидной из коментариев, поэтому просто приведём его листинг:
#!/bin/sh # IP-адрес ноутбука IP="192.168.111.71" # Подготавливаем временную директорию echo -n "Creating temporary directory..." rm -rf '/tmp/syncssh' mkdir -p '/tmp/syncssh' echo "...OK" # Сгружаем во временную директорию файлы с ноутбука echo -n "Downloading files from notebook.." scp ${IP}:"~/.ssh/known_hosts" "/tmp/syncssh" > /dev/null echo -n ".." scp ${IP}:"~/.ssh/authorized_keys" "/tmp/syncssh" > /dev/null echo "..OK" # Объединяем файлы с ноутбука и локальной машины echo -n "Syncing files..." cat /tmp/syncssh/known_hosts ~/.ssh/known_hosts | sort | uniq > /tmp/syncssh/known_hosts_new cat /tmp/syncssh/authorized_keys ~/.ssh/authorized_keys | sort | uniq > /tmp/syncssh/authorized_keys_new echo "...OK" # Копируем новые файлы на локальную машину echo -n "Installing new files on to local machine..." mv /tmp/syncssh/known_hosts_new ~/.ssh/known_hosts mv /tmp/syncssh/authorized_keys_new ~/.ssh/authorized_keys echo "...OK" # Загружаем файлы на ноутбук echo -n "Uploading new files on to notebook.." scp ~/.ssh/known_hosts ${IP}:"~/.ssh" > /dev/null echo -n ".." scp ~/.ssh/authorized_keys ${IP}:"~/.ssh" > /dev/null echo "..OK" # Удаляем временную директорию echo -n "Removing temorary files..." rm -rf '/tmp/syncssh' echo "...OK"
Этот скрипт нужно сохранить например под именем ~/scripts/syncssh.sh и сделать его исполнимым:
chmod +x ~/scripts/syncssh.sh
Теперь для синхронизации достаточно выполнить команду:
~/scripts/syncssh.sh
При нормальной работе вывод скрипта будет выглядеть следующм образом:
Creating temporary directory......OK Downloading files from notebook......OK Syncing files......OK Installing new files on to local machine......OK Uploading new files on to notebook......OK Removing temorary files......OK
На этом всё. Единственное на что стоит обратить внимание - чтобы каждый раз при копировании файлов с/на ноутбук не запрашивался пароль - полезно настроить авторизацию по ключу. Как это сделать можно прочитать здесь.
Приятной работы!
AlexanderMarkov 2009-01-21 20:49:28 (#)