Нет.
Unix (не tar) сделает одну вещь:
Помните, что вы можете использовать tar для чтения или записи в канал (на самом деле t в tar
означает ленту, то есть когда мир был молод), поэтому tar
Вышесказанное верно для базового tar -c
.
tar -u
добавит новый файл. tar --diff
и tar --delete
. Итак, после долгих разговоров с Калебом мы наконец нашли решение проблемы. Вход в систему, который я пытался выполнить прямо в программное обеспечение для управления запасами, был неудобным, но, если цитировать наши сегодняшние разговоры назад и вперед, это решило проблему. Нет необходимости записывать нажатия клавиш. Просто старое доброе использование башмака.
Первое соединение в вашем скрипте - это войти в систему и создать сеанс в файле cookie:
curl -s -c cookiejar.txt -b cookiejar.txt -L -d (скрытый) -e 'https: // my.channelgrabber.com/login.php 'https://my.channelgrabber.com/login.php -o / dev / null
Затем вы можете запросить другую страницу, но вы должны передать предыдущую, на которой вы были на. Например, после вышеуказанного вы можете запустить:
curl -s -c cookiejar.txt -b cookiejar.txt -L -e 'https://my.channelgrabber.com/index.php' https: // my .channelgrabber.com / products.php -o products.html
Это позволило мне идеально реализовать то, что мне было нужно. Отсюда я просто удалил cookie после того, как он был использован, и получил то, что мне было нужно:
rm -rf cookiejar.txt
... и установил его в задании cron для запуска каждые 5 минут. Я сделал несколько дополнительных строк относительно полной функции, но именно здесь я все исправил. Было много проб и ошибок. Еще раз большое спасибо Калебу , который помог мне со всем этим.
Я согласен с другими, что могут быть лучшие способы решения вашей проблемы, но я вижу некоторые преимущества в записи того, что вы делаете, и использовании этого для позже сделаю сценарий.
Чтобы отслеживать ввод, вы можете передать его через tee
, который выведет его в файл, например:
tee logFile < /dev/stdin | bash
Вы можете закрыть его, нажав CTRL - D .
Позвольте компьютеру записывать команды и писать за вас начало сценария. Это тривиально с TCL , в частности с ожидаемым
.
$ autoexpect ssh somesystem
autoexpect started, file is script.exp
Last login: Mon Jan 23 15:14:04 2017 from 84-182-91-4.dyn.example.net
somesystem$ pwd
/home/jdoe
somesystem$ exit
logout
Connection to 192.0.2.42 closed.
autoexpect done, file is script.exp
$ cat script.exp
...
Или обычный сценарий, это тоже легко.
#!/usr/bin/env expect
package require Tcl 8.5
set timestamp [clock format [clock seconds] -format "%Y-%m-%d"]
exec scp user@host:/in/log.csv /out/log-$timestamp.csv
Требуется взаимодействие с созданием
после автоматизации? Это то, для чего interact
. Подскажет пароль? Нетрудно автоматизировать с помощью , кроме
.
Запись команд и их воспроизведение - неправильный способ решения этой проблемы. Вместо этого вы должны написать сценарий, который будет выполнять эту работу. Сценарии оболочки - это, по сути, просто списки команд, которые вы запускаете в командной строке в порядке их выполнения. Начните новый черный текстовый файл в редакторе и в первой строке введите, в какой оболочке вы хотите его запустить. Например, это будет хорошим началом:
#/usr/bin/env bash
Теперь сохраните этот файл с каким-нибудь именем, например fetch_and_post_logs.bash
. Обратите внимание, что это должно быть место, где cron
сможет найти его, /usr/local/bin/
может быть хорошим выбором.
Далее, установите скрипт в качестве исполняемого:
$ chmod 755 /usr/local/bin/fetch_and_post_logs.bash
Теперь давайте немного доработаем этот скрипт. Для этой части вам придется предоставить некоторые ноу-хау самостоятельно, но допустим, вы начнете с копирования чего-то с удаленного сервера в локальную папку:
#/usr/bin/env bash
timestamp=$(date +%Y-%m-%d)
scp user@remotehost:/path/to/logs.csv /path/to/www/logs-${timestamp}.csv
Затем из cron запустите этот скрипт:
0 0 * * * /usr/local/bin/fetch_and_post_logs.bash
Это должно помочь вам начать. Если вам нужна помощь, пожалуйста, задавайте конкретные вопросы о местах, в которых вы застряли.
Примечание, чтобы это работало, cron
должен иметь возможность войти в систему как пользователь без пароля, поэтому вам нужно установить пользователя с ограниченным доступом только к журналам, а затем добавить открытый/закрытый ключ par, чтобы он мог аутентифицироваться.