Powered By Blogger
Показаны сообщения с ярлыком Scripts. Показать все сообщения
Показаны сообщения с ярлыком Scripts. Показать все сообщения

среда, 21 ноября 2012 г.

Копировать все файлы содержащие определенный текст в Linux

Для того чтобы найти и скопировать все файлы находящиеся в определенном каталоге и содержащие заданный текст можно выполнить следующий скрипт:


for f in `find [где искать] -type f`; do
grep '[что искать]' $f
if [ $? = 0 ]; then
cp $f [куда копировать]
fi
done

среда, 12 сентября 2012 г.

Подсчет количества участников списка рассылки

  1. Создаем ps1 скрипт
  2. В него вставляем команды:
$members = Get-DistributionGroupMember – Identity [название группы] –ResultsSize unlimited
$members.count

Либо, если необходимо посчитать количество участников во всех группах рассылки, то немного усложним скрипт:


$groups = Get-DistributionGroup
foreach ($DG in $groups) 

{
 $groupmembers = Get-DistributionGroupMember -Identity $DG
$Name =  Get-DistributionGroupMember -Identity $DG | ft Name
$GroupName = Get-DistributionGroup -Identity $DG | ft DisplayName
$count=[Double]$groupmembers.count

[выводим список необходимых полей]
 $GroupName
 $Name
$count
}


Если, как в моем случае, необходимо найти все группы в которых количество пользователей превышает N, то вводим еще один вложенный цикл:

if ($count -gt  [число N])
{
$GroupName
$count
}


вторник, 21 августа 2012 г.

Мониторинг свободного пространства в БД Exchange

PS1 скрипт для мониторинга реально используемого места БД с помощью Nagios.
Объем свободного места рассчитывается из расчета: "размер диска с БД" - ("размер файла БД" - "объем свободного места внутри БД").

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$status = Get-MailboxDatabase -Identity vlg-mb-db10 -status
$aval = [Double]$status.databasesize - [Double]$status.AvailableNewMailboxSpace
$free = [math]::truncate(([disk size in bytes] - [Double]$aval) / 1024 /1024 /1024)

if($aval -gt [size crit_limit in bytes]){
$Res = "CRITICAL: DiskSpace is too low on vlg-mb-db10. " + $free + " Gb free"
$Output = $Res
$statFlag = 1
}
else{
($aval -lt [size warn_limit in bytes])
$Res = "DiskSpace is OK on Database: vlg-mb-db10 " + $free + " Gb free"
$Output = $Res
}


Write-Host $Output
if($statFlag -eq 1){
    exit 2
}else{
    exit 0
}

вторник, 31 июля 2012 г.

Преобразование в число в PoSh

Например:




1.PS> $number = Read-Host 'Enter a number'
2.Enter a number: 100
3.PS> $number * 12
4.100100100100100100100100100100100100

Теперь то же самое с явным указанием типа [Double]:


1.PS> $number = [Double](Read-Host 'Enter a number')
2.Enter a number: 100
3.PS> $number * 12
4.1200


http://www.articles-it.ru/programming/scripts/145-powershell-convert-to-numeric.html

среда, 11 июля 2012 г.

Количество п\я заданного размера в БД

Get-Mailbox -Database [database name]| Get-MailboxStatistics | where { ($_.TotalItemSize -le "500 MB") -and ($_.TotalItemSize -gt "1 MB")} | Sort-Object DisplayName | ft DisplayName, TotalItemSize                     

среда, 28 марта 2012 г.

Проверка доступности порта в Linux

Простой запрос позволяющий выдать ответ о доступности порта по telnet (например для мониторинга).

if [[ "$(echo "quit" | telnet [хост] [порт] 2>/dev/null | grep 'Escape\ character' | wc -l)" -eq "1" ]]; then echo "Port open"; else echo "Port closed"; fi

 

среда, 18 мая 2011 г.

Скрипт для удаления большого кол-ва файлов

Скрипт для удаления большого кол-ва файлов из директории которую не удается открыть стандартными методами.

#!/usr/bin/perl

use strict;
#archive log dir last backslash required
my $ALOG_DIR="/usr/local/nagios/var/spool/perfdata/";
my $LOGFILE="/dev/shm/log.log";
#Keep archive logs for 300 days
my $KEEPTIME=300*24*3600;
#Current time
my $UTIME=time;
$UTIME=$UTIME - $KEEPTIME;
#Read archive log file dir into array
opendir DIR, $ALOG_DIR  || die "can't opendir $ALOG_DIR: $!";
my @dir_arc_log=readdir DIR;
closedir DIR;
my $file;
foreach $file (@dir_arc_log) {
if ($file ne "." and $file ne "..") {
          #Remove files
 my @fstat = stat($ALOG_DIR . $file);
  if (@fstat[9] < $UTIME) {
unlink $ALOG_DIR . $file;
#log
my $time=localtime(time);
#open ( OUT, "> $LOGFILE" ) or die "Cannot open file:  $LOGFILE";
open (LOG,">> $LOGFILE") or die "Cannot open file $file: $LOGFILE";
printf LOG "\[$time\] $file @fstat[9]\n";
#printf LOG "\[$time\] $file @mtime";
close LOG;