喫茶XRAYトップページ

[スレッド全体
]

[11855] SSH 公開鍵認証返信 削除
2018/5/22 (火) 14:31:29 SO
こんにちは。

早速ですが、さくらインターネット< https://www.sakura.ad.jp/ >のsshサーバーに、
Tera Termで公開鍵認証を行っています。

Tera Termの手動による操作及び、手動によるTera Termマクロの認証は動作しているのですが、
タスクスケジューラ(ログインしているかどうかにかかわらす実行する)にて動作しません。

ぐぐって調べると、
http://www.illinternet.com/2017/11/05/teraterm%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%81%A7%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%80%82/
等にて、ユーザーがログオンしているかどうかにかかわらず実行する」を選択すると、バッチが動作しないと書かれています。

別の方法でも構いませんので、なにかご存知の方おられましたら、
教えてください。

# やりたいことは、ssh転送(ポートフォワーディング)を用いた、Mysqlのデータ同期です。

[11915] Re:SSH 公開鍵認証返信 削除
2018/6/6 (水) 22:12:37 taka
▼ SOさん
> こんにちは。
>
> 早速ですが、さくらインターネット< https://www.sakura.ad.jp/ >のsshサーバーに、
> Tera Termで公開鍵認証を行っています。
>
> Tera Termの手動による操作及び、手動によるTera Termマクロの認証は動作しているのですが、
> タスクスケジューラ(ログインしているかどうかにかかわらす実行する)にて動作しません。
>
> ぐぐって調べると、
> http://www.illinternet.com/2017/11/05/teraterm%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%81%A7%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%80%82/
> 等にて、ユーザーがログオンしているかどうかにかかわらず実行する」を選択すると、バッチが動作しないと書かれています。
>
> 別の方法でも構いませんので、なにかご存知の方おられましたら、
> 教えてください。


Tera Termの問題でしたら
ターミナルをPuttyに変更して試してみてはどうですか?

Tera Termより
Puttyのほうがユーザーが多いので自動化とかたくさんヒットしますよ。
 Putty 公開鍵認証 自動化
 Putty ポートフォワーディング


[11923] Re2:SSH 公開鍵認証返信 削除
2018/6/8 (金) 20:48:11 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;
##


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82