PowerShellでエックスサーバにファイルを自動転送する

エックスサーバを使用している方でファイルを自動で転送できたらいいな思う方はいませんか?

今回、エックスサーバにファイルを自動で転送するプログラムを作ってみましたので公開したいと思います。

前提条件

以下に今回の記事における前提条件を記載します。

  • エックスサーバの管理画面においてSSH接続設定が完了していること(分からなければエックスサーバのマニュアルをご参照ください。)
  • TeraTermがインストール済みで、実際にアクセス確認が出来ていること
  • WinSCPやFFFTPがインストール済みであること

事前準備

これを実施するには事前準備が必要です。

この事前準備が一番大変な部分になりますが、乗り越えるとかなり楽なものになると思います。

OpenSSHを使用可能な状態にする

はじめにエックスサーバにファイル転送を行うにあたりPowerShellでOpenSSHの機能を追加します。

[スタート]をクリックし、そのまま[オプション機能の管理]と入力します。
一番上に[オプション機能の管理]が表示されたらクリックします。

オプション機能の管理

[オプション機能]に[OpenSSH クライアント]が存在することを確認します。
もしなければ一番上にある[機能の追加]をクリックします。
機能の追加に[OpenSSH クライアント]があれば[インストール]をクリックします。

秘密鍵を生成する

PowerShellでエックスサーバにアクセスするために秘密鍵を生成します。

[スタート]をクリックし、そのまま[powershell]と入力します。
一番上に[Windows PowerShell]が表示されたらクリックします。

PowerShellの起動

以下のコマンドを実行し、[.ssh]フォルダへ移動します。

cd C:\Users\[Windowsログインユーザ名]\.ssh

 

以下のコマンドを使用して秘密鍵を生成します。

ssh-keygen -t rsa

 

[Enter file in which to save the key (C:\Users\[Windows ログインユーザ名]/.ssh/id_rsa):]と表示されますので[id_rsa]と入力します。

 

[Enter passphrase (empty for no passphrase):]と表示されますので、そのまま[Enter]キーを押します。

今度は、[Enter same passphrase again:]と表示されますので、そのまま[Enter]キーを押します。

 

こんな画面が表示されればOKです。(まだ閉じないでください。)

 

[エクスプローラー]を開き、[C:\Users\[ユーザ名]\.ssh]を開きます。
[id_rsa]と[id_rsa.pub]の2つのファイルがあれば鍵の生成は完了となります。

秘密鍵を配置する

生成した秘密鍵をエックスサーバに保存します。

WinSPCやFFFTPなど何でも構いませんのでエックスサーバのホームディレクトリ(/home/[ユーザ名/])に[id_rsa.pub]を保存します。

 

TeraTermでエックスサーバにログインします。
以下のコマンドを実行し、先程転送した[id_rsa.pub]が存在することを確認します。

ls -la

 

以下のコマンドを実行し[id_rsa.pub]を[.ssh]ディレクトリに移動させます。

mv id_rsa.pub .ssh/
ls -l .ssh/

 

[authorized_keys]はSSH接続するにあたって重要なファイルなので、以下のコマンドを実行しバックアップを取得します。

cd .ssh
cp -p authorized_keys [任意のバックアップ後のファイル名]

 

以下のコマンドを実行し[authorized_keys]に[id_rsa.pub]の情報を追記します。

cat id_rsa.pub >> authorized_keys

 

接続確認

以下のコマンドを実行しエックスサーバへSSHログインできることを確認します。
このとき、正しく設定が完了していれば、パスワードを入力せずにエックスサーバへSSHログインすることができます。

ssh -p 10022 [エックスサーバのアカウント名]@[契約しているサーバのIPアドレス]

サーバのIPアドレスが分からない場合は、エックスサーバの管理画面にログインし、[サーバー情報]をクリックします。

 

[IPアドレス]という項目が表示されているはずなので、この数字を入力します。

エックスサーバへファイルを転送する

空のテキストファイルを作成し、以下のコードをそのままコピーします。

@ECHO OFF

REM ================
REM 各種定義
REM ================

SET USERID=[エックスサーバのユーザID]
SET SERVER=[エックスサーバのIPアドレス]
SET SRCFILE=[アップロードしたいファイルの保存先とファイル名]

REM エックスサーバのホームディレクトリは、/HOME/[ユーザID]なので
REM その先どこへ保存するかを最後の[/]に追記
REM ホームディレクトリ内でよければこのままでOK
SET FILEPATH=/home/%USERID%/


REM ================
REM 実処理
REM ================

POWERSHELL Set-ExecutionPolicy RemoteSigned

POWERSHELL SCP -P 10022 %SRCFILE% %USERID%@%SERVER%:%FILEPATH%

EXIT /B 0

 

各自変更して頂きたい箇所を記載します。

SET USERID=[エックスサーバのユーザID] たとえばtestというユーザIDであれば SET USERID=test となります。

SET SERVER=[エックスサーバのIPアドレス] たとえばサーバのIPアドレスが 192.168.1.1 の場合は SET SERVER=192.168.1.1 となります。

SET SRCFILE=[アップロードしたいファイルの保存先とファイル名] たとえばアップロードしたいファイル[test.txt]で、保存先がCドライブ直下である場合は SET SRCFILE=C:\test.txt となります。

SET FILEPATH=/home/%USERID%/
エックスサーバのホームディレクトリ内に保存したい場合は、変更する必要はありません。
たとえばエックスサーバの[xxxx.jp]フォルダ内の[public_html]に転送したい場合は SET FILEPATH=/home/%USERID%/xxxx.jp/public_html/ となります。

書き換えが完了したらファイルを保存します。
そして拡張子を[.bat]に変更します。拡張子から前のファイル名は任意で結構です。

実行してみる

実際に実行してみましょう。

作成したファイルを右クリックし[管理者として実行]をクリックします。

 

黒い画面が一瞬でると思いますがすぐ消えます。
TeraTermやFFFTPなどのツールでファイルが転送されているか確認してください。

転送されていれば成功となります。

定期的に実行したい場合

自動で定期的に実行させたい場合は、[タスクスケジューラ]を使用するのが有効的です。

注意
パソコンの電源が切れているとタスクスケジューラは実行されません。
定期的に実行させたい場合は、実行される時間までにパソコンの電源を付けておいてください。
[スタート]をクリックし、そのまま[タスクスケジューラ]と入力します。
一番上に[タスク スケジューラ]が表示されたらクリックします。

 

[基本タスクの作成]をクリックします。

 

[名前]にタスクの名前を指定します。(任意で結構です)

 

バッチの実行周期を指定します。
今回は、[毎日]を指定することにしました。

 

バッチを実行する時間を指定します。
なお、ここで指定した時間に毎日実行されることになります。

 

[プログラムの開始]をクリックします。

 

[参照]をクリックし、作成したバッチを選択します。

 

内容を確認し、問題がなければ[完了]をクリックします。

 

[タスク スケジューラ ライブラリ]をクリックし、作成したタスクが登録されていることを確認します。
その後、作成したタスクをダブルクリックします。

 

[全般]タブを開き一部設定変更します。
設定が完了後、[OK]をクリックします。

  • ログイン時のみ実行する場合:[ユーザがログオンしているときのみ実行する]にチェック
  • パソコンが起動中であればいつでも実行させたい場合:[ユーザがログオンしているかどうかにかかわらず実行する]にチェック
  • [最上位の特権で実行する]にチェック
  • [表示しない]にチェック
  • [Windows 10]を選択

 

いつもログインしているユーザ名とパスワードを入力し、[OK]をクリックします。

 

あとは時間になるまで待ちましょう。
指定した時間を経過後、再度エックスサーバーへTeraTermやFFFTPなどのツールを使用してファイルが転送されているか確認してください。

スポンサーリンク

おすすめの記事