Я использую Digital Ocean API для создания пары капель (их имя для сервера).
Эти капли могут принимать метаданные пользователя, которые по сути представляют собой файл с командами оболочки, которые я хочу запустить для подготовки сервера при создании.
Пример приведен здесь:
https://www.digitalocean.com/community/ tutorials / an-Introduction-to-droplet-metadata
Откровенно говоря, мне просто нужно проверить, успешно ли запущен сценарий bash. Я знаю пару громоздких способов проверить это, но я надеюсь, что будет что-нибудь попроще.
Думаю, проще всего было бы просмотреть историю команд, которые выполнялись на машине, или что-то в этом роде. Возможно ли это для команд, запускаемых из сценария оболочки?
Я знаю команду history
, но она работает только для команд, введенных, когда ssh'ed
в машину. На самом деле здесь не отображаются команды из моего сценария bash.
Надеюсь, кто-нибудь знает быстрый и простой способ просмотреть все команды, выполняемые на машине.
Ура.
Ваш сценарий должен что-то делать. Просто проверьте, действительно ли это произошло.
Если это по каким-то причинам невозможно, просто добавьте что-нибудь вроде
touch /tmp/mycheckfile
в конец скрипта, а затем проверьте, присутствует ли этот файл. Просто, легко и быстро.
Обратите внимание, что это неправильная обработка ошибок, все, что она делает, - это проверка того, что сценарий был выполнен. Если вы поместите set -e
в начало скрипта, он также завершится при любой ошибке и, таким образом, не будет создавать файл, если что-то пошло не так в скрипте.
Если вы хотите усложнить ситуацию, вы можете использовать все методы создания отчетов об ошибках и перенаправления вывода, разрешенные bash, включая запись в системный журнал с помощью команды logger
.
Вы также можете вывести каждую строку, выполняемую вашим скриптом, с помощью set -x
. В DO выходные данные будут перечислены в системном журнале службы cloud-init. Вы также можете записать его в файл следующим образом:
#!/bin/bash
set -x
{
do-something
do-something-else
} 2>/tmp/mylogfile
with приведет к содержимому файла, подобному этому:
+ do-something
+ do-something-else
Обратите внимание, что я перенаправил вывод STDERR
с помощью 2>
, поскольку эти строки будут отправлены в этот поток.