overview
毎回コマンドを思い出しながら打つのが面倒だったので
mount.bat
wslに物理ドライブをマウント
ps1じゃなくてこれbatです、ps1でも実行できるんかな?試してない
wsl --mount \\.\PHYSICALDRIVE1 --barewsl --mount \\.\PHYSICALDRIVE1 --partition 2pause仕組みと使い方
これをbatで保存した後にショートカットで結びつけます。ショートカットのプロパティに管理者で実行するみたいなやつあるのでそれにします。
するとショートカットをダブルクリックすると管理者で実行するので、このスクリプトが正常に動作します
マウントが完了すると画面に PHYSICALDRIVE みたいなやつを含んだパスが表示されます。
wslに入ってそこにアクセスするとドライブがWSLから閲覧できます
wsl --unmount \\.\PHYSICALDRIVE1
pauseアンマウントはこんな感じ?PHYSICALDRIVEの部分は起動したときと同じモノに変更して、同じようにショートカットで保存がおすすめです。
fetch.ps1
SCPコマンドを実行
param( [Parameter(Mandatory=$true, Position=0)][string]$Target, [Parameter(Mandatory=$true, Position=1)][string]$RemotePath)
$LocalDir = "C:\Users\user\Downloads"
scp -r "${Target}:${RemotePath}" "$LocalDir"使い方
.\fetch.ps1 {ssh-to} {src-path}
# リモートにある写真をダウンロード
# configに設定があるなら.\fetch.ps1 host ~/img/image.pngssh-to にはSSH config に書いてあるホスト名(またはIPアドレス)、src-path にはリモート側のパス
scp -r で再帰的にコピーするので、ディレクトリごと持ってくることもできます
ダウンロード先は $LocalDir で固定しているので、環境に合わせて変えてください、おすすめはダウンロードディレクトリです
出力された画像とか、csvとか手元で見るのにおすすめ
あと公開鍵暗号をconfigで適用したときの環境しか試してないので、user@ip のパスワード認証ではどうなるか分からないです。
forward.ps1
SSHポートフォワーディング
param( [Parameter(Mandatory = $true, Position = 0)] [string]$Target,
[Parameter(Position = 1)] [int]$RemotePort = 80,
[Parameter(Position = 2)] [string]$LocalHost = "localhost")
$LocalPort = $RemotePort
Write-Host "Forwarding ${LocalHost}:${LocalPort} -> ${Target}:${RemotePort}"Write-Host "Press Ctrl+C to stop."
ssh -N -L "${LocalHost}:${LocalPort}:localhost:${RemotePort}" $Target使い方
.\forward.ps1 {ssh-to} {port}
# リモートの3000番をローカルの3000番に転送.\forward.ps1 {ssh-to} 3000
# ローカルの待ち受けアドレスを変えたい場合.\forward.ps1 {ssh-to} 8080 0.0.0.0-N でシェルを開かずにフォワーディングだけ, -L のオプションは ローカルアドレス:ローカルポート:リモート側localhost:リモートポート の形式です
デフォルトでlocalのlocalhost:{port}にバインドされます。使い方2個目のようにローカルのバインドするipを変えることもできます。
localport = remoteport にしているので、リモートのポートと同じポートをローカルのポートにバインドすることになります。直感的ですね。
Ctrl+C で終了、開発サーバ上でしか動いていないWebサービスを手元のブラウザで確認したいときに使えます