Автоматизация Cygwin через командный файл - PullRequest
3 голосов
/ 28 сентября 2010

Короче говоря ... у нас есть несколько серверов, которые мы проводим мониторинг перфлогов каждую ночь. Моя работа заключается в том, чтобы преобразовать эти журналы в формат .csv и отправить их на мою электронную почту.

Этот бит уже автоматизирован с помощью сценария .sh, написанного бывшим сотрудником.

Что мне нужно, чтобы автоматизировалось, так это запускать пакетное задание после входа в систему perfmon, чтобы посмотреть на конкретную папку и найти последний файл .blg и запустить на нем скрипт sh (скрипт называется upload), чтобы необходимо войти на каждый сервер и сделать это вручную.

, например

загрузить myInitials cd /cygdrive/someLocation/logs/$latestFile$.blg

myInitials и местоположение могут быть жестко запрограммированы ... Я просто не знаю, как найти последний файл в папке и автоматизировать все это с помощью командного файла.

Любые указатели были бы очень полезны!

@ Джереми:

Извините, я, наверное, должен был упомянуть в своем вопросе, что серверы работают в 2003 и 2008 годах.

Не думаю, что было бы абсолютно необходимо зарегистрировать уведомление об изменении в папке. Если журнал запускается с полудня до 7 часов утра, сценарий будет запущен сразу после (вы можете настроить сценарий на запуск после журнал perfmon завершил работу в свойствах журнала), поэтому журнал в любом случае почти наверняка будет последним файлом в папке.

Как я уже сказал, у меня уже есть файл .sh для преобразования в csv и отправки на мою электронную почту, мне просто нужно включить его в пакетный файл, чтобы вместо меня перейти на каждый из серверов и открыв cygwin и напечатав upload xx /cygdrive/location/logs/xyz.blg, я могу автоматизировать его запуск сразу после завершения журнала без необходимости в нем RDC.

Спасибо за ввод!

Ответы [ 3 ]

8 голосов
/ 06 октября 2010

Если у вас есть сценарий оболочки, и ваша задача - вызвать сценарий оболочки из пакетного файла Windows, это будет работать. Предполагается, что cygwin установлен в C:

Содержимое файла start_cyg.bat

@echo off
set PATH=%PATH%:"C:\Cygwin\bin"

rem bash --login -i

bash "/cygdrive/d/cyg.sh"

Содержимое cyg.sh

#!/bin/bash

TAIL=`ls -lrt | tail -1`
echo "TAIL:$TAIL"

Если вы вызываете start_cyg.bat из командной строки Windows, вы можете получить выходные данные cyg.sh в консоли

2 голосов
/ 28 сентября 2010

для получения нового файла в каталоге, ls -1tr | tail -1 должно работать.

1 голос
/ 28 сентября 2010

Во-первых, я не знаю, будет ли он соответствовать вашим требованиям, но планировщик задач Windows 2 в Vista + очень надежен и может вызывать событие даже на основе записей журнала.Однако для извлечения и анализа этой записи журнала могут потребоваться некоторые сценарии и могут возникнуть проблемы с параллелизмом, даже если эта запись журнала действительно указала последний использованный процесс.Скорее всего, ничего из этого не полезно, но просто добавьте его.

Программно это будет просто, поскольку вы можете зарегистрировать уведомление об изменении в папке.Когда происходит изменение, вы идете найти последний файл.Затем запустите командный файл, чтобы запустить сценарий оболочки, или любую другую желаемую последовательность.

Я думаю, что cygwin может даже поддерживать события уведомлений об изменениях через сценарии, хотя я не уверен.Я считаю, что для этого есть расширения linux, но я могу ошибаться.

Если бы это был я, я просто написал бы небольшое приложение на C ++, чтобы делать все, что я хотел ... но для вас, может быть, любое (или больше)скорее всего ничего) из вышеперечисленных помогает; о.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...