Powered By Blogger

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

Просмотр пароля в MRemoteNG

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

В таком случае можно применить обходное решение - добавить новый External Tool содержащий следующие параметры:
1. Filename: "cmd"
2. External command: "/k echo %password%"

Затем применить данный External Tool на хосте от которого вы забыли пароль. После применения откроется окно CMD в котором будет выведен ваш пароль в текстовом виде.

вторник, 27 ноября 2012 г.

Добавление поля Notes в Nagios\Icinga

Для того чтобы добавить новое поле на Web интерфейс системы мониторинга Nagios или Icinga необходимо внести соответствующие изменения в исходник для status.cgi - status.c.

1. Скачиваем и распаковываем последнюю версию Nagios\Icinga
2. Открываем файл /cgi/status.c
3. Находим раздел который формирует основную таблицу ( раздел отмечен комментарием "/* the main list of services */")  и добавляем в конце списка столбцов строку:

printf("<TH CLASS='status'>Notes</TH>\n");

4. Находим раздел отмеченный комментарием "/* the rest of the columns... */" и так же в конце дописываем

printf("<TD onClick=\"toggle_checkbox('service_%d','tableformservice');\" CLASS='status%s' valign='center'>%s</TD>\n", total_service_entries, status_bg_class, (temp_service->notes==NULL)? "&nbsp;":temp_service->notes);

В данном случае добавлен функционал заменяющий текст null на пробел в случае если поле не содержит значений ((temp_service->notes==NULL)? "&nbsp;").

5. Пересобираем все CGI (make -cgi), затем просто заменяем получившимся status.cgi уже содержащийся в каталоге /usr/local/icinga/sbin файл

P.S. для Nagios все примерно тоже самое, за исключением части формирующей включение чек-бокса при нажатии на строку ("<TD onClick=\"toggle_checkbox('service_%d','tableformservice');\" CLASS='status%s' valign='center'>%s</TD>\n")

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

http://fossies.org/dox/icinga-1.8.1/index.html

Nagios:

http://fossies.org/dox/nagios-3.4.2/

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

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

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


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

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

Отправка сообщений от имени списка рассылки

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

Add-ADPermissions -Identity <Distribution Group> -User <User\Security Group> -ExtendedRigths Send-As

Так же эти права можно выдать непосредственно из консоли AD в свойствах данной группы.

Права SendOnBehalf выдаются с помощью:

Set-DistributionGroup GroupName -GrantSendOnBehalfTo UserName

среда, 31 октября 2012 г.

Включение автоответа для нескольких ящиков

В Exchange 2010 появилась возможность включения автоответа из консоли с помощью командлета Set-MailboxAutoReplyConfiguration.

Для включения автоответа одновременно на нескольких сотрудников (в моем случае всех уволенных), необходимо выполнить следующую команду:

Get-Mailbox -ResultSize unlimited -OrganizationalUnit "[OU для отключенных УЗ]" | where {($_.ForwardingAddress -like $null)} | Set-MailboxAutoReplyConfiguration -AutoReplyState Enabled -InternalMessage "[текст сообщения]"

пятница, 5 октября 2012 г.

Настройка прав для Room Mailbox

С помощью следующего командлета можно выдать необходимые права на RoomMailbox: 

Add-MailboxFolderPermission -identity <roomname>@<domain.com> -user <email address of user who needs access> -AccessRights <AccessRight>

Варианты прав на ящик
  • ReadItems   The user has the right to read items within the specified folder.
  • CreateItems   The user has the right to create items within the specified folder.
  • EditOwnedItems   The user has the right to edit the items that the user owns in the specified folder.
  • DeleteOwnedItems   The user has the right to delete items that the user owns in the specified folder.
  • EditAllItems   The user has the right to edit all items in the specified folder.
  • DeleteAllItems   The user has the right to delete all items in the specified folder.
  • CreateSubfolders   The user has the right to create subfolders in the specified folder.
  • FolderOwner   The user is the owner of the specified folder. The user has the right to view and move the folder and create subfolders. The user can’t read items, edit items, delete items, or create items.
  • FolderContact   The user is the contact for the specified public folder.
  • FolderVisible   The user can view the specified folder, but can’t read or edit items within the specified public folder.
Так же есть возможность настройки ролей пользователя на RoomMailbox. Варианты ролей:
  • None   FolderVisible
  • Owner   CreateItems, ReadItems, CreateSubfolders, FolderOwner, FolderContact, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
  • PublishingEditor   CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
  • Editor   CreateItems, ReadItems, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
  • PublishingAuthor   CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, DeleteOwnedItems
  • Author   CreateItems, ReadItems, FolderVisible, EditOwnedItems, DeleteOwnedItems
  • NonEditingAuthor   CreateItems, ReadItems, FolderVisible
  • Reviewer   ReadItems, FolderVisible
  • Contributor   CreateItems, FolderVisible
Выполняется это следующим образом:
http://www.marcvalk.net/2010/05/exchange-2010-setting-room-permissions/ 

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

Перенос логов Exchange 2007 StorageGroup на другой диск

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

1. Отмонтировать БД в SG
2. Выполнить Suspend StorageGroup Copy
3. Выполнить Move-StorageGroupPath -Identity [ имя SG] -LogFolderPath "[путь к новому каталогу для логов]" 
4. Выполнить Resume StorageGroup Copy
3. Примонтировать БД

В случае, когда используется CCR, процесс немного усложняется:

1. Отмонтировать БД в SG
2. Выполнить Suspend StorageGroup Copy
3. Выполнить Move-StorageGroupPath -Identity [ имя SG] -LogFolderPath "[путь к новому каталогу для логов]" -ConfigurationOnly
4. Скопировать и перенести на новое место лог-файлы для обеих нод CCR
5. Выполнить Resume StorageGroup Copy
6. Примонтировать БД

Чаще всего, файлы самой StorageGroup располагаются на том же диске что и логи, поэтому их переносим вместе с лог-файлами добавив к командлету Move-StorageGroupPath опцию
-SystemFolderPath "[путь к новому каталогу для файлов SG]". 
Полностью команда должна выглядеть так:

Move-StorageGroupPath -Identity [ имя SG] -LogFolderPath "[путь к новому каталогу для логов]" -SystemFolderPath "[путь к новому каталогу для файлов SG]" -ConfigurationOnly

      

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

  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
}


Копирование файлов с помощью putty (pscp)

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

Одного файла:

pscp.exe [файл для копирования] [УЗ на целевом сервере]@[IP или hostname целевого сервера]:[куда копировать]

Нескольких файлов:

pscp.exe [путь к каталогу с файлами]/* [УЗ на целевом сервере]@[IP или hostname целевого сервера]:[куда копировать]                                                          

Статистика подключений пользователей на Hub\CAS

Для сбора статистики по подключениям пользователей на конкретный Hub\CAS сервер (например для оценки нагрузки), нужно использовать командлет Get-LogonStatistics.

Он покажет параметры подключения пользователя к почтовому ящику (время, Hub, используемый клиент, etc)
Ключами для него могут являться как  имя MailBox сервера, так и название БД или имя пользователя.

Например:

Get-LogonStatistics -identity [имя пользователя] | ft LastAccessTime, ClientName

Get-LogonStatistics -Server [название MailBox сервера] | ft UserName, ClientName

Запускать необходимо строго на сервере с ролью MailBox.

понедельник, 10 сентября 2012 г.

Подсчет количества сообщений в Exchange

Сосчитать количество отправленых\полученных серверами Exchange сообщений за интервал времени можно следующим образом:

Get-MessageTrackingLog -start “mm/dd/yyyy hh:mm:ss” -end “mm/dd/yyyy hh:mm:ss” -eventid “[send\receive\etc]” -resultsize unlimited  -server [имя сервера] | measure-object                                 

пятница, 7 сентября 2012 г.

Поиск и перемещение файлов содержащих определенный набор символов в Linux

find [где] -name '[маска]' | xargs -t -i mv {} [куда перемещать]

Запрет на автоматическую переадресацию сообщений вовне в Exchange

Для включения запрета на переадресацию с помощью правил Outlook для всех пользователей, необходимо:

1. Зайти в Organization Configuration-> Hub Transport
2. Открыть вкладку Remote Domains
3. Открыть свойства коннектора default
4. На вкладке Message Format отключить опцию "Allow automatic forward"

Там же можно отключить\включить автоответы, отчеты о доставке, NDR и т.д.

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

Get-Mailbox | where {$_.ForwardingAddress -ne $null} | ft name,forwardingaddress

понедельник, 3 сентября 2012 г.

Вставка через буфер обмена в MC

При вставке данных в файл открытый для редактирования в MidnighCommander через буфер обмена, а не через F3-F5, происходит перенос каждой новой строки на один отступ дальше чем предыдущую.
Для отключения этого "эффекта" необходимо:

1. Открыть редактор MC
2. По F9 зайти в меню
3. Выбрать пункт Options - General
4. Отключить опцию "Return does autoindent"

пятница, 31 августа 2012 г.

П\я Exchange сотрудников заблокированных n-дней назад

 Ищем всех сотрудников чьи почтовые ящики были заблокированы N дней назад.
Дата блокировки хранится в CustomAttribute2:

Get-Mailbox –ResultSize Unlimited | where{$_.CustomAttribute2 -ne "$null"} |
select *,@{name="Date";e={[datetime]::ParseExact($_.CustomAttribute2,'dd.MM.yyyy',$null)}} | Where{$_.Date -le ((Get-Date).AddDays(-[дней с момента блокировки]))} | ft -autosize Database, DisplayName

понедельник, 27 августа 2012 г.

среда, 22 августа 2012 г.

Перенос БД Exchange на другой диск

1. Отмонтируем БД
2. Копируем файлы БД на целевой диск (копию БД так же переносим на аналогичный диск)
3. Выполняем Move-DatabasePath –Identity 'db name' –EDBFilePath 'd:\DAG\Data\mydb.db -ConfigurationOnly
4. Монтируем БД

вторник, 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
}

Предоставить FullAccess на все п\я

Get-MailboxDatabase -identity “[mailbox database name]” | Add-ADPermission -user [username] -AccessRights GenericAll

пятница, 10 августа 2012 г.

Статусы сообщений в MessageTracking

BADMAIL

Сообщение было отправлено каталогом раскладки или каталогом преобразования и не может быть доставлено и возвращено.

DELIVER

Сообщение было доставлено в почтовый ящик.

DEFER

Доставка сообщения отложена.

DSN

Создано уведомление о доставке.

DUPLICATEDELIVER

Сообщение было доставлено получателю повторно. Повторная доставка сообщений может происходить в том случае, если получатель входит в две группы рассылки. Банк данных обнаруживает и удаляет дубликаты сообщений.

EXPAND

Была расширена группа рассылки.

FAIL

Не удается доставить сообщение.

POISONMESSAGE

Сообщение помещено в очередь подозрительных сообщений или удалено из нее.

RECEIVE

Сообщение получено и сохранено в базе данных. Событие RECEIVE может быть получением SMTP (Источник: SMTP) или почтой, переданной с помощью STOREDRIVER (Источник: STOREDRIVER).

Событие SMTP RECEIVE может происходить из любого источника, передающего сообщения по протоколу SMTP. Например, это может быть роль транспортного сервера-концентратора, роль пограничного транспортного сервера, сторонний агент передачи сообщений (MTA) или клиент POP/IMAP.

Событие STOREDRIVER RECEIVE регистрируется процессом пограничного транспортного сервера и соответствует событию STOREDRIVER SUBMIT. Событие STOREDRIVER SUBMIT регистрируется процессом отправки почты. Это может происходить как на одном сервере (если обе роли установлены локально), так и на разных серверах.

REDIRECT

Сообщение перенаправлено другому получателю в результате поиска в службе каталогов Active Directory.

RESOLVE

В результате поиска в Active Directory для получателей сообщения был найден другой адрес электронной почты.

SEND

Сообщение было отправлено на другой сервер с использованием протокола SMTP.

SUBMIT

Событие SUBMIT регистрируется службой отправки почты на компьютере с сервером Exchange 2007 и установленной ролью сервера почтовых ящиков. Событие SUBMIT регистрируется в тот момент, когда служба успешно уведомляет транспортный сервер-концентратор о том, что сообщение в хранилище почтовых ящиков ожидает отправки.

Свойство SourceContext содержит сведения о GUID базы данных сообщений (MDB), GUID почтового ящика, последовательном номере события, классе сообщения, отметке времени создания при отправке клиентом в хранилище и типе клиента. В качестве типа клиента может выступать пользователь (Outlook с прямым подключением по протоколу MAPI), RPCHTTP (мобильный Outlook), Outlook Web Access, веб-службы Exchange, Exchange ActiveSync, помощники или транспорт. Журналы отслеживания сообщений, которые создаются ролью сервера почтовых ящиков, содержат только события SUBMIT.

TRANSFER

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

http://technet.microsoft.com/ru-ru/library/bb124375%28v=exchg.80%29.aspx

понедельник, 6 августа 2012 г.

вторник, 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

пятница, 20 июля 2012 г.

Определение свободного пространства в БД


Get-MailboxDatabase [database name] -status | Format-Table Name, DatabaseSize, AvailableNewMailboxSpace

или для нескольких БД:

Get-MailboxDatabase | where  {($_.Identity -like "шаблон имени БД *")} | Get-MailboxDatabase -status | Format-Table Name, DatabaseSize, AvailableNewMailboxSpace                                                                                                                                                                                

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

Удаление disconnected и soft-deleted ящиков

If you want to remove all disconnected mailboxes from a database, run the following command

Get-MailboxStatistics –Database “dbname” | Where-Object {$_.DisconnectReason –eq “Disabled”} | ForEach {Remove-StoreMailbox –Database $_.database –identity $_.mailboxguid –MailboxState Disabled

If you want to remove all soft-deleted mailboxes from a database, run the following command

Get-MailboxStatistics –Database “dbname” | Where-Object {$_.DisconnectReason –eq “Softdeleted”} | ForEach {Remove-StoreMailbox –Database $_.database –identity $_.mailboxguid –MailboxState Softdeleted

http://penetrateit.wordpress.com/2012/03/07/exchange-2010-purgeremove-disconnected-or-soft-deleted-mailboxes/

Настройка автоконфигурации прокси (PAC)

понедельник, 16 июля 2012 г.

Удаление отключенных ящиков


Listing all disconnected mailboxes

Get-MailboxStatistics | where-object { $_.DisconnectDate -ne $null } | Select DisplayName,MailboxGuid

Removing a single entry

Remove-Mailbox -Database <Database-Name> -StoreMailboxIdentity <MailboxGuid> -confirm:$false

четверг, 12 июля 2012 г.

Перенос БД и\или логов Exchange

http://technet.microsoft.com/en-us/library/dd979782.aspx


1.Note any replay lag or truncation lag settings for all copies of the mailbox database being moved. You can obtain this information by using the Get-MailboxDatabase cmdlet, as shown in this example.


 Get-MailboxDatabase DB1 | fl *lag*

2.If circular logging is enabled for the database, it must be disabled before proceeding. You can disable circular logging for a mailbox database by using the Set-MailboxDatabase cmdlet, as shown in this example.


 Set-MailboxDatabase DB1 -CircularLoggingEnabled $false

3.Remove all mailbox database copies for the database being moved. For detailed steps, see Remove a Mailbox Database Copy. After all copies are removed, preserve the database and transaction log files from each server from which the database copy is being removed by moving them to another location. These files are being be preserved so the database copies to not require re-seeding after they have been re-added.

4.Move the mailbox database path to the new location. For detailed steps, see Move the Database Path.

Important:
During the move operation, the database being moved must be dismounted. Until the move is complete, this process will cause an interruption in service and an outage for all users with mailboxes on the database being moved. After the move operation completes, the database is automatically mounted.

5.Create the necessary folder structure on each Mailbox server that previously contained a passive copy of the moved mailbox database. For example, if you moved the database to C:\mountpoints\DB1, you must create this same path on each Mailbox server that will host a mailbox database copy.

6.After creating the folder structure, move the passive copy of the mailbox database and its log stream to the new location. These are the files that were left from and preserved after Step 3. Repeat this process for each database copy that was removed in Step 3.

7.Add all of the database copies that were removed in Step 3. For detailed steps, see Add a Mailbox Database Copy.

8.On each server that contains a copy of the mailbox database being moved, run the following commands to stop and restart the content index services.


Net stop msftesql-Exchange
Net start MSExchangeSearch

9.Optionally, enable circular logging by using the Set-MailboxDatabase cmdlet, as shown in this example.


 Set-MailboxDatabase DB1 -CircularLoggingEnabled $true

10.Reconfigure any previously set values for replay lag time and truncation lag time by using the Set-MailboxDatabaseCopy cmdlet, as shown in this example.


 Set-MailboxDatabaseCopy DB1\MBX2 -ReplayLagTime 00:15:00

11.As each copy is added, we recommend that you verify the health and status of the copy prior to adding the next copy. You can verify the health and status by:

a.Examining the event log for any error or warning events related to the database or the database copy.

b.Using the Get-MailboxDatabaseCopyStatus cmdlet to check the health and status of continuous replication for the database copy.

c.Using the Test-ReplicationHealth cmdlet to verify the health and status of the database availability group and continuous replication.

среда, 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                     

вторник, 3 апреля 2012 г.

среда, 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

 

вторник, 20 марта 2012 г.

Создание адресной книги с ресурсными п\я

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

Set-AddressList -Identity "Имя адресной книги" -RecipientFilter {((RecipientType -eq 'UserMailbox') -and (ResourceMetaData -like 'ResourceType:*') -and (ResourceSearchProperties -ne $null) -and  (DisplayName -like 'Шаблон*' ))}

четверг, 16 февраля 2012 г.

Маски подсетей

http://wiki.xtronics.com/index.php/IP_Subnet_Masks


Net bits Subnet mask total-addresses per subnet
/20255.255.240.0 4096
/21255.255.248.0                              2048
/22                  255.255.252.01024
/23255.255.254.0512
/24255.255.255.0256
/25255.255.255.128128
/26255.255.255.19264
/27255.255.255.22432
/28255.255.255.24016
/29255.255.255.2488
/30255.255.255.2524