Acabei criando um pequeno script PHP no Bash for Windows para fazer o trabalho. Ele chama wmic
para obter a lista de serviços e salva isso em um arquivo de texto com versão usando o git. É chamado uma vez por dia no cron.
Então, posso usar algo como tig
para visualizar as alterações ao longo do tempo.
Aquiestáoscriptsealguémestiverinteressadoemfazeralgosemelhante(éumpoucohackymasfunciona):
<?php
$wmicPath = '/mnt/c/Windows/System32/wbem/WMIC.exe';
$logDir = $_SERVER['HOME'] . '/var/log/win_services_mon';
@mkdir($logDir, 0755, true);
chdir($logDir);
$logFile = $logDir . '/services.log';
if (!file_exists($logDir . '/.git')) {
exec('git init');
}
exec($wmicPath . ' service get name,caption,startmode > ' . $logFile);
$content = file_get_contents($logFile);
if (strpos($content, 'ÿþ') === 0) {
$content = substr($content, 2); // Remove BOM
}
$content = str_replace("<?php
$wmicPath = '/mnt/c/Windows/System32/wbem/WMIC.exe';
$logDir = $_SERVER['HOME'] . '/var/log/win_services_mon';
@mkdir($logDir, 0755, true);
chdir($logDir);
$logFile = $logDir . '/services.log';
if (!file_exists($logDir . '/.git')) {
exec('git init');
}
exec($wmicPath . ' service get name,caption,startmode > ' . $logFile);
$content = file_get_contents($logFile);
if (strpos($content, 'ÿþ') === 0) {
$content = substr($content, 2); // Remove BOM
}
$content = str_replace("%pre%", '', $content); // Convert two bytes per character to one (definitely the wrong way to do this, but can't get iconv to work)
file_put_contents($logFile, $content);
exec('git add .');
exec('git commit -m "' . date('Ymd-His') . '"');
", '', $content); // Convert two bytes per character to one (definitely the wrong way to do this, but can't get iconv to work)
file_put_contents($logFile, $content);
exec('git add .');
exec('git commit -m "' . date('Ymd-His') . '"');