Появилась необходимость сбора логов по расписанию с виртуальных машин linux. Я наткнулся на подобное решение и немного видоизменил его. Как оно работает. С машины, которая имеет безпарольный доступ ко всем вм запускаться скрипт, который “стягивает” по scp файлы логов и складирует их в папку по ip.
#!/usr/bin/expect -f #set timeout 100 #set PASS "1qazxdr5" set USER "root" set HOST "10.1.9.67" spawn ssh $USER@$HOST; #expect "password:" #send "$PASS\r" expect "#" set DIR [exec hostname] send "exit\r" expect "#" spawn mkdir /root/$HOST \r; expect "#" spawn scp -r $USER@$HOST:/var/log/* /root/$HOST; #expect "password:" #send "$PASS\r" expect eof
Можно делать это также rsync.
#!/usr/bin/expect -f spawn python send_message_begin.py set timeout 300 set USER "root" set HOST "10.1.9.2" spawn ssh $USER@$HOST; expect "#" set DIR [exec hostname] send "exit\r" expect "#" spawn mkdir /var/log/$HOST; expect "#" spawn rsync --progress -avzr -e ssh $USER@$HOST:/var/log/* /var/log/$HOST; expect eof