понедельник, 11 февраля 2013 г.

rsync через ssh

Сегодня столкнулся с проблемой передачи файла с помощью scp. Каждый раз передача останавливалась на случайном месте, scp показывал статус передачи -stalled-, после чего (выждав таймаут) закрывался с ошибкой broken pipe. Не помогло даже снижение скорости (ключ -l). Канал, через который шла передача, меня уже неоднократно подводил, но другого способа попасть в защищенную сеть нет. Зато нашел способ передачи с использованием rsync:
rsync --rsh='ssh' -av --progress --partial username@server1.example.com:/path/file ./
Передача рвалась как и прежде, но теперь у меня появилась возможность докачивать файл. Rsync должен быть установлен на обоих машинах.

sudo через ssh

Иногда бывает необходимо срочно выполнить какую-то команду на куче серверов одновременно. И даже при наличии puppet на это уйдёт некоторое время. Поэтому я использую такой приём:
for i in $(seq 1 7); do ssh -t username@server${i}.example.com sudo ifconfig ix0 promisc up; done
А суть этого поста в параметре -t, без которого sudo не хочет запрашивать пароль.