名前 題名 ▼ takaさん > # 自動化サンプル2 : powershell + ssh > > # タスクの設定: プログラム/スクリプト > # %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe > # 引数の追加(オプション) > # -ExecutionPolicy RemoteSigned -File c:\tmp\test_task2.ps1 > > # コマンドパスに空白がある場合は先頭に & をつける &"パ ス" > > ## 設定 ssh > $remote_user="ユーザー名" > $remote_host="ホスト名" > > ## mysql > $mysql_user="DBユーザー名" > $mysql_pass="DBパスワード" > $mysql_server_hostname="127.0.0.1" # 同一サーバーなら通常 127.0.0.1、違う場合はDBのホスト名 > $mysql_server_port="3306" # 通常 3306 > $mysql_local_port="3307" # ローカル 任意のポート番号 > > $mysql_exe="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe" > $mysqladmin_exe="C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqladmin.exe" > > # コマンド引数へ渡すとき 1次元変数は 1個で処理されてしまうので配列にいれる > $mysql_common_args_array=@("-P","$mysql_local_port") > if ($mysql_user -ne "") { $mysql_common_args_array += @("-u", "$mysql_user") } > if ($mysql_pass -ne "") { $mysql_common_args_array += @("-p", "$mysql_pass") } > > ## my_cmd > $mysql_test_sql="`"INSERT INTO table_date VALUES(CURRENT_TIMESTAMP);`"" > $my_cmd="$mysql_exe" > $my_cmd_args="-s $mysql_common_args_array -D test -e $mysql_test_sql" > # [String]::Join(" ",$mysql_common_args_array) をしなくても勝手に連結されるみたい > > $ssh="ssh" > $ssh_args="-L ${mysql_local_port}:${mysql_server_hostname}:${mysql_server_port} ${remote_user}@${remote_host} -N" > > > try { > # プロセスを実行+未待機 > $process = Start-Process "$ssh" -ArgumentList "$ssh_args" -PassThru > # [Console]::WriteLine("{0}", "$ssh $ssh_args") > > # powershellのsshは遅い > # 指定秒数待機する > timeout 8 > > $connected=$FALSE > # 接続できているか確認する(2秒x10回試行する) > for ($i=0; $i -lt 10; $i++) { > &"$mysqladmin_exe" ping $mysql_common_args_array > if ($?) { > $connected=$TRUE > break > } > timeout 2 > } > > # 接続できていればコマンドを実行する > if ($connected) { > # プロセスを実行+待機 > ## ここで何かする > Start-Process "$my_cmd" -ArgumentList "$my_cmd_args" -Wait > } > > } finally { > # 起動したSSHを強制的にシャットダウン > if ($process.SI -ne $NULL -Or $process.ProcessName -ne $NULL) { > [Console]::WriteLine("Stop {0}", $process.ProcessName) > Stop-Process -InputObject $process > } > > # 保護しているが万が一残ってしまって > # 生き残りをすべて抹消するには手動で以下のコマンド > # Stop-Process -name SSH > > } > > ## > # テスト用のテーブルを作成 > # CREATE TABLE table_date (`create_at` datetime NOT NULL); > ## > # テスト用のテーブルを表示 > # SELECT * FROM table_date; > ## > # テスト用のテーブルをクリア > # DELETE FROM table_date; > ## GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link