Работаем с MySQL через SSH-туннель в powershell
03 Oct 2018
local_offer
mysql
local_offer
powershell
Запрос к MySQL через SSH-туннель:
$tunnelcmd = "c:\ProgramData\icinga2\Scripts\icinga2\bin\plink.exe"
$tunnelarg = "-batch -P 2201 -N -C -v -L 33060:localhost:3306 user@222.222.222.222 -pw password"
$processPlink = (start-process $tunnelcmd -argumentlist $tunnelarg -PassThru)
Start-Sleep -s 5
$connString = "Server=127.0.0.1;Port=33060;Uid=user;Pwd=password;database=inventory;charset=utf8"
$sQLquery = "SELECT ClassID, Name, Namespace, Enabled FROM tbInventoryClass WHERE Enabled = 1"
Invoke-MySQLQuery -connectionString $connString -query $sQLquery
$processPlink.Kill()
Функция SQL запроса (Invoke-MySQLQuery):
function Invoke-MySQLQuery {
Param(
[Parameter(
Mandatory = $true,
ParameterSetName = '',
ValueFromPipeline = $true)]
[string]$query,
[Parameter(
Mandatory = $true,
ParameterSetName = '',
ValueFromPipeline = $true)]
[string]$connectionString
)
try {
# load MySQL driver and create connection
Write-Verbose "Create Database Connection"
# Обязательно заменить в промышленной среде!!!
$icinga2ScriptsPath = "C:\ProgramData\icinga2\Scripts\icinga2"
$mySQLDataDLL = "$icinga2ScriptsPath\bin\MySQL.Data.dll"
[void][system.reflection.Assembly]::LoadFrom($mySQLDataDLL)
#[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = $ConnectionString
Write-Verbose "Open Database Connection"
$connection.Open()
# Run MySQL Querys
Write-Verbose "Run MySQL Querys"
$command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command)
$dataSet = New-Object System.Data.DataSet
$recordCount = $dataAdapter.Fill($dataSet, "data")
$dataSet.Tables["data"] # | Format-Table
} catch {
$ErrorMessage = $_.Exception.Message
Write-Host "Could not run MySQL Query" $ErrorMessage
} finally {
Write-Verbose "Close Connection"
$connection.Close()
}
} #Конец функции Invoke-MySQLQuery