tag:crieit.net,2005:https://crieit.net/tags/WinSCP/feed 「WinSCP」の記事 - Crieit Crieitでタグ「WinSCP」に投稿された最近の記事 2022-03-15T23:49:45+09:00 https://crieit.net/tags/WinSCP/feed tag:crieit.net,2005:PublicArticle/18155 2022-03-15T23:44:55+09:00 2022-03-15T23:49:45+09:00 https://crieit.net/posts/WinSCP-bat WinSCPのコマンドを使ったbatでファイルを取得するサンプル <p>WinSCPのコマンドを使って、ファイルを取得するbatのサンプルは下記。</p> <p>目的:<br /> 指定した日付以降のファイルをダウンロードしたい</p> <p>引数:<br /> 1.パスワード<br /> 2.IPアドレス(IPアドレスが固定じゃない場合用)<br /> 3.目的の「指定した日付」に該当する年月日(フォーマット:MM/DD/YY)</p> <pre><code>rem 引数の設定 set password=%1 set addr=%2 set date=%3 rem 保存したセッション情報を使用する場合 rem set remoteSession="保存したセッション名" rem 実行ファイル set WinSCP="実行ファイルパス\WinSCP.com" rem 実行するスクリプト set scriptFile="スクリプトファイルパス\scriptFile.txt" rem ダウンロード用フォルダ set downloadFolder=ダウンロードフォルダパス rem ダウンロード用一時フォルダ set tempFolder=temp set tempPath=%downloadFolder%%tempFolder%\ cd /d %downloadFolder% rem 一時フォルダがない場合は作成する if not exist %tempFolder% mkdir %tempFolder% rem 保存したセッション情報を使用する場合 rem echo open %remoteSession% > %scriptFile% rem SCPでセッションopen echo open scp://ユーザー名:%password%@%addr%:22 > %scriptFile% echo cd ダウンロードするファイルパス >> %scriptFile% rem バイナリモードに変更 echo option transfer binary rem ダウンロード echo get ./* %tempPath% >> %scriptFile% rem セッションクローズ echo close >> %scriptFile% rem WinSCPのコンソールをclose echo exit >> %scriptFile% rem スクリプトファイルを実行 @%WinSCP% /script=%scriptFile% rem xcopyで対象日付以降のファイルをダウンロードフォルダに移動 xcopy /Y /D:%date% %tempPath%\* %downloadFolder% rem 一時フォルダを削除 rmdir /s /q %tempFolder% cd ../ </code></pre> <p>callコマンドで、findを使った指定した更新日付以降の取得結果を絞り込めるかと思ったけれど、下記のようにした場合、【get 抽出したファイルのダウンロード】の部分は、callで実行されるリモート側のシェルコマンド扱いなので、get をWinSCPのコマンドとして認識してくれない。当然かもしれないけれど。</p> <p><code>call 【指定した更新日付以降のファイルの抽出】 | 【get 抽出したファイルのダウンロード】</code></p> <p>そうすると、ファイルを選別してダウンロードするためには、以下の方法になりそう。</p> <p>1.callでダウンロードファイルを選別して、リネーム、もしくは一時ディレクトリにコピーしてからgetでダウンロード。ダウンロード後に一時ディレクトリは削除。</p> <p>2.ダウンロード後にファイルを選別し、不要なファイルを削除。</p> <p>上記だと2.の手段のほうが、リモートファイルを操作しないから安全かも。<br /> 他に方法あるのかなぁ。</p> ao-iro tag:crieit.net,2005:PublicArticle/17909 2022-01-02T11:27:06+09:00 2022-01-02T11:27:06+09:00 https://crieit.net/posts/opts-utf8-off-in-ftp FTP で日本語ファイルが文字化けする場合の対処法 (FFFTP, WinSCP) <p>FTP でサーバにアップロードされている日本語ファイルを扱う際に注意すべき事項をメモしておきます。</p> <p>……そもそも基本的に日本語を含むマルチバイト文字をアップロードするのは宜しくないのですが、誤ってアップロードしてしまった際などの対処法として。</p> <p>ちなみに一度アップロードしたファイルはサーバによってはクライアントとサーバの文字コードの違いで正しく認識できず、名前の変更や削除すらできなくなってしまうこともあるので注意。</p> <h2 id="FFFTP"><a href="#FFFTP">FFFTP</a></h2> <p>まず FFFTP の場合。</p> <p>登録されている接続情報を選択して「設定変更」。</p> <p><a href="https://crieit.now.sh/upload_images/03532d6f05581eebaed1869f1376e85661d10cae6e13d.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03532d6f05581eebaed1869f1376e85661d10cae6e13d.jpg?mw=700" alt="FFFTP で UTF-8 での転送をオフにする方法" /></a></p> <p>「拡張」タブを開き、「接続時にホストに送るコマンド」のテキストエリアに以下の文字列を入力。</p> <pre><code>OPTS UTF8 OFF </code></pre> <p>これで接続しなおすと文字化けしなくなります。</p> <h2 id="WinSCP"><a href="#WinSCP">WinSCP</a></h2> <p>次に WinSCP の場合。</p> <p><a href="https://crieit.now.sh/upload_images/277405ec94482f9de10d36d0e616301961d10cc95832c.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/277405ec94482f9de10d36d0e616301961d10cc95832c.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>セッションを繋ごうとした際に、右下の「設定」のドロップダウンから「設定」を選択。</p> <p>「高度なサイトの設定」ダイアログの中で、左のツリーから「環境」下の「FTP」を選択。</p> <p><a href="https://crieit.now.sh/upload_images/ae05d931526c5c5b222c469add3a111261d10cfc3d733.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ae05d931526c5c5b222c469add3a111261d10cfc3d733.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>「ログイン コマンドの送信」のテキストエリアで FFFTP と同様に次のコマンドを入力。</p> <pre><code>OPTS UTF8 OFF </code></pre> <p>これでOK。</p> <h2 id="備考"><a href="#%E5%82%99%E8%80%83">備考</a></h2> <p>原因としては、サーバが対応していないのにクライアント側が UTF-8 で転送しようとすると文字化けを起こす模様。</p> <p>しかも Windows10 はデフォルトで UTF-8 で転送するよう</p> <pre><code>OPTS UTF8 ON </code></pre> <p>のコマンドを送るとのことので、より現象に遭遇しやすくなっているものと思われます。</p> <p>この辺で面倒になるので、サーバにはマルチバイト文字のファイル名は止めていただきたいのですよね。あと、スペースや特殊な記号を含むファイル名。</p> <h2 id="余談 (WinSCP)"><a href="#%E4%BD%99%E8%AB%87+%28WinSCP%29">余談 (WinSCP)</a></h2> <p>今回は効果がなかったですが別の方法を。</p> <p><a href="https://crieit.now.sh/upload_images/b423c134d9938fa8c6f29702ce200dba61d10d050fe06.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b423c134d9938fa8c6f29702ce200dba61d10d050fe06.jpg?mw=700" alt="WinSCP で UTF-8 での転送をオフにする方法" /></a></p> <p>「高度なサイトの設定」ダイアログで「環境」を選択、「サーバ環境」の中の「ファイル名を UTF-8 でエンコード」を「オフ」にしても今回は効果がありませんでした。</p> <p>……項目の名前的に同じことをやっているような気がするのですが、何か差があるのでしょうか。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <h3 id="FFFTP"><a href="#FFFTP">FFFTP</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://ponnao.com/?p=13858">[サーバ覚書]FTPソフトで日本語ファイルが文字化けする場合の対処 | ponnao-clip</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.sthark.com/spt/7769/">日本語ファイルが文字化けする場合の対処方法(FFFTP) - スターク ホスティング</a></li> </ul> <h3 id="WinSCP"><a href="#WinSCP">WinSCP</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://faq.cpi.ad.jp/faq/show/101?category_id=35&site_domain=default">日本語のファイル名やディレクトリ名は利用できますか。 | よくあるご質問(FAQ) | CPIサポート</a></li> </ul> <h3 id="WinSCP (今回は効果がなかった)"><a href="#WinSCP+%28%E4%BB%8A%E5%9B%9E%E3%81%AF%E5%8A%B9%E6%9E%9C%E3%81%8C%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%29">WinSCP (今回は効果がなかった)</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.3ryu-engineer.work/winscp-utf8/">簡単!WinSCPでファイル名が文字化けする原因と対応方法 - 3流なSEのメモ帳</a></li> </ul> <h3 id="Windows10 での仕様"><a href="#Windows10+%E3%81%A7%E3%81%AE%E4%BB%95%E6%A7%98">Windows10 での仕様</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://social.technet.microsoft.com/Forums/ja-JP/0ae7f6a7-531c-4162-9870-fe7dfde23e82/winows101239112398ftp124671251012531124892345534892261781239825391?forum=win10itprogeneralJP">Winows10でのFTPコマンド実行時の振る舞いについて</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://teratail.com/questions/123844">FTP - ftpでファイルを自動ダウンロードしたい|teratail</a></li> </ul> <p>Windows 10 ではデフォルトで <code>OPTS UTF8 ON</code> (UTF-8 でファイル名を扱う) コマンドをサーバに送信してしまうため、対応していないサーバでは今回のような現象が発生してしまうようです。</p> <h3 id="RFC2640"><a href="#RFC2640">RFC2640</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.ietf.org/rfc/rfc2640.html">https://www.ietf.org/rfc/rfc2640.html</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://docs.grapecity.com/help/secureftp-dotnet-4/Dart.Ftp~Dart.Ftp.Ftp~Encoding.html">Encoding プロパティ (Ftp)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.ibm.com/docs/ja/zos/2.2.0?topic=ftp-utf-8-enabled-control-connection">UTF-8 使用可能制御接続 - IBM Documentation</a></li> </ul> <p>サーバが UTF-8 をサポートしている場合は <code>OPTS UTF8 ON</code> を送るよう RFC2640 で定義されている模様。</p> <h3 id="サーバ側 (proftpd)"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E5%81%B4+%28proftpd%29">サーバ側 (proftpd)</a></h3> <ul> <li><a target="_blank" rel="nofollow noopener" href="http://www.dt8.jp/cgi-bin/adiary/adiary.cgi/0580">Windowsエクスプローラで文字化けしないFTPサーバ - 色々日記(ざ・めも)</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.connectworks.jp/blog/ftp%E3%81%A7%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91/">FTPでの文字化け | コネクトワークス</a></li> </ul> arm-band tag:crieit.net,2005:PublicArticle/17881 2021-12-21T23:53:33+09:00 2021-12-21T23:53:33+09:00 https://crieit.net/posts/winscp-transfer-mode-settings-20211221 WinSCP の転送モードを確認する (+ 拡張子による自動判定の履歴を削除する) <h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2> <p>WinSCP で Perl プログラムをアップロードしたら 500 Internal Server Error. となってしまいました。</p> <h2 id="調査"><a href="#%E8%AA%BF%E6%9F%BB">調査</a></h2> <p>サーバログでは次のようなエラーログが記録されていました。</p> <pre><code>suexec policy violation: see suexec log for more details: PATH/TO/PERL_CGI_PROGRAM.cgi </code></pre> <p>権限周り等も見ましたが、最終的には転送モードをバイナリモードのまま Perl プログラムをアップロードしていたことが原因でした。</p> <h2 id="設定変更"><a href="#%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4">設定変更</a></h2> <p>そこで、転送モードを見直してASCIIモードで転送するようにしました。</p> <p><a href="https://crieit.now.sh/upload_images/57ae0b4b64c0f31d1a68185836a8da9161be081dbcd6e.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/57ae0b4b64c0f31d1a68185836a8da9161be081dbcd6e.jpg?mw=700" alt="ウィンドウ上部の「転送設定」を開く" /></a></p> <p>WinSCP を起動したら、まずウィンドウ上部の「転送設定」を開きます。</p> <p>次に、プルダウンの最下部の「⚙設定」をクリックします。</p> <p><a href="https://crieit.now.sh/upload_images/e9df1d70f158dbe665326f7013ed7a9361be08245df3c.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e9df1d70f158dbe665326f7013ed7a9361be08245df3c.jpg?mw=700" alt="プリセットの中から「デフォルト」を選択" /></a></p> <p>いくつかプリセットが登録されていますが、今回は汎用的に使い回すので「デフォルト」の設定を変更したいと思います。そこで、「デフォルト」を選択肢て「編集」。</p> <p><a href="https://crieit.now.sh/upload_images/fba63cf9d53c492e382edbfdbfde0cc661be082a93c4e.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fba63cf9d53c492e382edbfdbfde0cc661be082a93c4e.jpg?mw=700" alt="「転送モード」を「バイナリ」から「自動」に切替" /></a></p> <p>「転送モード」を「バイナリ」から「自動」に切り替え、「以下のファイルはテキスト転送モード」でプリセットの値を設定。</p> <pre><code>*.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml </code></pre> <p>今回は対応したい拡張子が全てく踏まれているので、これでOKです。</p> <h2 id="(余談) 誤って登録してしまった「以下のファイルはテキスト転送モード」の履歴を削除する"><a href="#%28%E4%BD%99%E8%AB%87%29+%E8%AA%A4%E3%81%A3%E3%81%A6%E7%99%BB%E9%8C%B2%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%A3%E3%81%9F%E3%80%8C%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E8%BB%A2%E9%80%81%E3%83%A2%E3%83%BC%E3%83%89%E3%80%8D%E3%81%AE%E5%B1%A5%E6%AD%B4%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B">(余談) 誤って登録してしまった「以下のファイルはテキスト転送モード」の履歴を削除する</a></h2> <p>上述の一覧で見逃しをして、「この拡張子も」と独自に追加した一覧をいったん登録したところ、その履歴も常に表示されるようになってしまいました。</p> <p>普段弄る場所でもないので良いといえば良いのですが、気になるので何とか削除できないかと試みてみました。</p> <p>すると、この履歴はレジストリで保存していることが分かりましたので、削除したいと思います。</p> <p>※レジストリを誤って操作するとPCが起動しなくなるなどの重大な故障の原因になる可能性があります。編集される際は細心の注意を持って自己責任でお願いいたします。</p> <pre><code>\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\History\Mask </code></pre> <p>ここに格納されています。</p> <p><a href="https://crieit.now.sh/upload_images/e0537080ce83e067b1a30e8f453d9cf961be082d37daf.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e0537080ce83e067b1a30e8f453d9cf961be082d37daf.jpg?mw=700" alt="登録された履歴の一覧" /></a></p> <p>履歴は使用した順番で番号が入れ替わるのでそれで調整したり、不要な値を削除した後に残った1つの名前を変更で0にしても良いです。</p> <p><a href="https://crieit.now.sh/upload_images/021db01a366652ba571aa40e59acb33061be08305fd77.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/021db01a366652ba571aa40e59acb33061be08305fd77.jpg?mw=700" alt="登録された履歴の一覧(削除後)" /></a></p> <p>削除して完了。これで先程の WinSCP の画面でも1つしか表示されなくなりました。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://wp-master.club/cgi_permission">サーバー引越しでCGIのフォームエラーが出て、復旧した際の備忘録 | WP-Master.club</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://itsakura.com/winscp-use#s5">WinSCPの使い方(接続/転送モード/ログ) | ITSakura</a></li> </ul> arm-band