20220117のLinuxに関する記事は7件です。

VIrtualBox(Windows10)にCentOS7環境を構築し、TeraTermでssh接続をする。

はじめに この記事ではVirtualBoxを使用して、CentOS7の環境を構築し、TeraTermからサーバーにssh接続をします。 環境 VirtualBox:6.0 ホストOS:Windows10 ゲストOS:CentOS 7.9 1.VirtualBoxをインストール 以下のリンクからVirtualBoxをインストール [VirtualBox公式サイト] 2.CentOS7をダウンロード 以下のリンクからCentOS7のディスクイメージをダウンロード CentOSサイト 3.仮想マシンを作成 VirtualBoxを起動し「"新規(N)"」をクリック 「名前」を入力して、「次へ(N)」をクリック。(今回はCentOS7とします。) 「メモリサイズ」を2048MBに変更して、「次へ(N)」をクリック。 「ハードディスク」はデフォルト(仮想ハードディスクを追加する(C))のままで、「作成」をクリック 「ハードディスクのファイルタイプ」はデフォルト(VDI(virtualBox DiskImage))のままで「次へ(N)」をクリック。 「物理ハードディスクにあるストレージ」はデフォルト(可変サイズ(D))のままで「次へ」をクリック。 「ファイルの場所とサイズ」を16.00GBに変更して「作成」をクリック。 4.CentOSのインストール 作成した仮想マシンを選択し、「起動(C)」をクリック。 「起動ハードディスクを選択」でダウンロードしたCentOS7のディスクイメージを選択し、「起動」をクリック。 CentOSのインストーラーが起動するので、「Install CentOS 7」を選択し、Enterキーを押下。 言語選択画面が表示されるので、日本語を選択し、「続行(C)」をクリック。 「インストールの概要」の画面が表示されるので、「インストール先(D)」をクリック。 「インストール先」の画面が表示されるので、デフォルトのまま「完了(D)」をクリック。 「インストールの概要」の画面が表示されるので、「ネットワークとホスト名(N)」をクリック。 「ネットワークとホスト名」の画面が表示されるので、「オン」に切り替えて「完了(D)」をクリック。 「インストールの概要」の画面が表示されるので、「インストールの開始(B)」をクリック。 「設定」の画面が表示されるので、「ROOTパスワード(R)」をクリック。 「rootパスワード」の設定画面が表示されるので、「ROOTパスワード(R)」、「確認(C)」を入力して「完了(D)」クリック。 インストールが完了すると、「完了しました!」とメッセージが表示されるので、「再起動(R)」をクリック。 再起動すると以下のような画面が表示されます。 このままの状態で自動的にCentOSが起動します。CentOSが起動すると、下記のような画面が表示されるので、ユーザー名とパスワードを入力してログイン。 ここでは以下の情報でログイン login:root Password:設定したrootパスワード Oracle VM VirtualBox マネージャを開いて構築した環境の電源をOFF OFFにします。 5.TeraTermをダウンロード 以下のリンクからTeratermをダウンロード Teratermサイト 6.仮想環境にTeraTermでssh接続 Oracle VM VirtualBox マネージャを開いて構築した環境の「設定(S)」をクリック。 「設定」画面が開くので、「ネットワーク」→「アダプター2」の順にクリックしてネットワーク画面を表示。 「ネットワークアダプターを有効化(E)」にチェックし、「割り当て(A)」で「ホストオンリーアダプター」を選択。 「OK」をクリック。 作成した仮想マシンを選択し、起動をクリック。 ログインして以下のコマンドを入力し、IPアドレスを確認 IPアドレスを確認 $ ip a TeraTermを起動して、確認したIPアドレスを入力し、「OK」をクリック。 「セキュリティ警告」の画面が表示されるので「続行(C)」をクリック。 「SSH認証」の画面が表示されるので、ユーザー名とパスワードを入力してログイン。 ここでは以下の情報でログイン login:root Password:設定したrootパスワード 以下の画面が表示されれば無事接続完了です。 以上!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VIrtualBox(Windows10)にCentOS7環境を構築し、TeraTermでssh接続をする

はじめに この記事ではVirtualBoxを使用して、CentOS7の環境を構築し、TeraTermからサーバーにssh接続をします。 環境 VirtualBox:6.0 ホストOS:Windows10 ゲストOS:CentOS 7.9 1.VirtualBoxをインストール 以下のリンクからVirtualBoxをインストール [VirtualBox公式サイト] 2.CentOS7をダウンロード 以下のリンクからCentOS7のディスクイメージをダウンロード CentOSサイト 3.仮想マシンを作成 VirtualBoxを起動し「"新規(N)"」をクリック 「名前」を入力して、「次へ(N)」をクリック。(今回はCentOS7とします。) 「メモリサイズ」を2048MBに変更して、「次へ(N)」をクリック。 「ハードディスク」はデフォルト(仮想ハードディスクを追加する(C))のままで、「作成」をクリック 「ハードディスクのファイルタイプ」はデフォルト(VDI(virtualBox DiskImage))のままで「次へ(N)」をクリック。 「物理ハードディスクにあるストレージ」はデフォルト(可変サイズ(D))のままで「次へ」をクリック。 「ファイルの場所とサイズ」を16.00GBに変更して「作成」をクリック。 4.CentOSのインストール 作成した仮想マシンを選択し、「起動(C)」をクリック。 「起動ハードディスクを選択」でダウンロードしたCentOS7のディスクイメージを選択し、「起動」をクリック。 CentOSのインストーラーが起動するので、「Install CentOS 7」を選択し、Enterキーを押下。 言語選択画面が表示されるので、日本語を選択し、「続行(C)」をクリック。 「インストールの概要」の画面が表示されるので、「インストール先(D)」をクリック。 「インストール先」の画面が表示されるので、デフォルトのまま「完了(D)」をクリック。 「インストールの概要」の画面が表示されるので、「ネットワークとホスト名(N)」をクリック。 「ネットワークとホスト名」の画面が表示されるので、「オン」に切り替えて「完了(D)」をクリック。 「インストールの概要」の画面が表示されるので、「インストールの開始(B)」をクリック。 「設定」の画面が表示されるので、「ROOTパスワード(R)」をクリック。 「rootパスワード」の設定画面が表示されるので、「ROOTパスワード(R)」、「確認(C)」を入力して「完了(D)」クリック。 インストールが完了すると、「完了しました!」とメッセージが表示されるので、「再起動(R)」をクリック。 再起動すると以下のような画面が表示されます。 このままの状態で自動的にCentOSが起動します。CentOSが起動すると、下記のような画面が表示されるので、ユーザー名とパスワードを入力してログイン。 ここでは以下の情報でログイン login:root Password:設定したrootパスワード Oracle VM VirtualBox マネージャを開いて構築した環境の電源をOFF OFFにします。 5.TeraTermをダウンロード 以下のリンクからTeratermをダウンロード Teratermサイト 6.仮想環境にTeraTermでssh接続 Oracle VM VirtualBox マネージャを開いて構築した環境の「設定(S)」をクリック。 「設定」画面が開くので、「ネットワーク」→「アダプター2」の順にクリックしてネットワーク画面を表示。 「ネットワークアダプターを有効化(E)」にチェックし、「割り当て(A)」で「ホストオンリーアダプター」を選択。 「OK」をクリック。 作成した仮想マシンを選択し、起動をクリック。 ログインして以下のコマンドを入力し、IPアドレスを確認 IPアドレスを確認 $ ip a TeraTermを起動して、確認したIPアドレスを入力し、「OK」をクリック。 「セキュリティ警告」の画面が表示されるので「続行(C)」をクリック。 「SSH認証」の画面が表示されるので、ユーザー名とパスワードを入力してログイン。 ここでは以下の情報でログイン login:root Password:設定したrootパスワード 以下の画面が表示されれば無事接続完了です。 以上!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux入門 3-7 正規表現を使用したテキストファイルの検索

はじめに Linux初学者である自分向け用の記事です。Udemyの動画講座を参考にしました。 僕の勉強法は動画を見る→実際に動かしてみる→問題演習という流れです。 前回まで:Linux入門 3-6 3. LinuC 101 Ver .10.0(問題、テスト、演習) 正規表現を使用したテキストファイルの検索 正規表現 . 任意の一文字 * 直前の文字の0回以上の繰り返し ? 直前の文字の0回、1回 + 直前の文字の1回以上の繰り返し [] []で囲んだ文字の一文字 [a-z] a-zまでの文字 [^a] a以外 () ()内の文字を一文字として扱う {n} 直前の文字のn回繰り返し {min, max} 直前の文字のmin以上max以下の繰り返し ^ 行の先頭 $ 行の末尾 ¥ 次の文字を正規表現とする。 ¥t タブ ¥n 改行 | いずれか複数の条件 正規表現チェッカーで学習しよう。 grep 文字列と正規表現を用いて検索するコマンド –v: 特定の文字列を含まない行を抽出 –E: 正規表現を用いて文字を抽出(デフォルトでも正規表現は利用されるが、限定されている。-Eで拡張できる) –F: 正規表現を利用しない –n: 行数を付加して抽出 –i: 文字列の大文字と小文字を区別しない [root@c6140de26466 3]# cat test.txt Hi this is this file 123 456 abcde ABCDE [ABCDE] [root@c6140de26466 3]# grep this test.txt this is this file [root@c6140de26466 3]# grep -i abcde test.txt abcde ABCDE [ABCDE] [root@c6140de26466 3]# grep \\[ABCDE\\] test.txt [ABCDE] [root@c6140de26466 3]# grep -F [ABCDE] test.txt [ABCDE] [root@c6140de26466 3]# grep 'is(.*?)file' test.txt [root@c6140de26466 3]# grep -E 'is(.*?)file' test.txt is this file [root@c6140de26466 3]# egrep 'is(.*?)file' test.txt is this file egrep 正規表現を用いて文字列の検索をする。(grep –Eと同様) –n: 行数も表示 –v: 検索文字列を含まない行を抽出 –i: 文字列の大文字と小文字を区別しない fgrep 正規表現を利用しない(grep –Fと同様) –n: 行数も表示 –v: 検索文字列を含まない行を抽出 –i: 文字列の大文字と小文字を区別しない エディタを使った基本的なファイル編集の実行 エディタの基本 Linuxで利用するエディタには、主にvi, vim, nanoがあります。 vi Linuxの標準的なエディタ。使用方法は前章をご参照ください。 vim viを改良したもので以下のような特徴がある シェル、C言語、pythonなどのプログラミング言語の編集に色がつき利用しやすい gzip, zipなどの圧縮されたファイルの編集ができる vimdiffを用いて、複数のファイルを比較・編集できる nano Ubuntuでの標準エディタ。操作が簡単で比較的簡単に利用開始できる。 [root@c6140de26466 3]# yum install nano EDITOR エディタのパスを指定して、デフォルトのエディタを変更することができる。 [root@c6140de26466 3]# export EDITOR=/usr/bin/vim To Be Continued... Linux入門 3-8 へ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ansibleコマンド、ansible-playbookコマンドの主なオプション

ansibleコマンド、ansible-playbookコマンドの共通オプション オプション 説明 -l または --inventory インベントリの指定 -u または --user SSH接続するリモートユーザの指定 -k または --ask-pass SSHパスワードを聞く -b または -become rootでタスク実行 -K または --ask-become-pass rootパスワードを聞く -C または --check チェックモード(dry run)で実行 ansibleのオプション オプション 説明 -m または --module-name モジュールの指定 -a または --args モジュールに対する引数の指定 ansible-playbookのオプション オプション 説明 --syntax-check Playbookの構文のみチェック Ansibleのコマンド実行時に検索される、設定ファイルの順番 環境変数 ANSIBLE_CONFIG カレントディレクトリの「ansible.cfg」 ホームディレクトリの「ansible.cfg」または「.ansible.cfg」 「/etc/ansible/ansible.cfg」(デフォルトの設定ファイル) ansible基礎知識 インベントリ 管理対象ノードを記述するファイル 管理したいホストを1行に1つずつ追加 Ansibleが利用するPythonのテンプレートエンジン Jinja2
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSL2でDドライブ以降がマウントされなくなったときの対処

最近Windowsを起動した際にVSCodeを開くと,最近使用したフォルダのWSLのDドライブが開かれるのですが,フォルダのみ生成されており,中身が空になっております. 毎度WSLの再起動を行っていたのですがDockerDesktopが都度止まるのが面倒くさかったのでちゃんと調べてみました.(正しく自動マウントしてくれるような設定調べろって話ですが) マウントされてないのでmountすればいいみたいです.xを任意のドライブのアルファベットに書き換えてください. sudo mount -t drvfs X: /mnt/x これだけだと寂しいので少しだけ解説を付け加えておきます. まずmountはrootしか実行できないのでsudoが必要です. オプションの-tはマウントするファイルシステムを指定します.WSLで使用するファイルにdrvfsとvolfsがあるようです. volfsはWSL 内部を,drvfsはWSL 外部を管理するファイルシステムとなっています.今回はWSL外のWindowsのフォルダであるためdrvfsですね. 後はマウント元,マウント先を指定して終わりです. 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【メモ】WSL2でDドライブ以降がマウントされなくなったときの対処

最近Windowsを起動した際にVSCodeを開くと,最近使用したフォルダのWSLのDドライブが開かれるのですが,フォルダのみ生成されており,中身が空になっております. 毎度WSLの再起動を行っていたのですがDockerDesktopが都度止まるのが面倒くさかったのでちゃんと調べてみました.(正しく自動マウントしてくれるような設定調べろって話ですが) マウントされてないのでmountすればいいみたいです.xを任意のドライブのアルファベットに書き換えてください. sudo mount -t drvfs X: /mnt/x これだけだと寂しいので少しだけ解説を付け加えておきます. まずmountはrootしか実行できないのでsudoが必要です. オプションの-tはマウントするファイルシステムを指定します.WSLで使用するファイルにdrvfsとvolfsがあるようです. volfsはWSL 内部を,drvfsはWSL 外部を管理するファイルシステムとなっています.今回はWSL外のWindowsのフォルダであるためdrvfsですね. 後はマウント元,マウント先を指定して終わりです. 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

コマンドラインから YouTube の音楽を連続再生したい

序文 「そんなコマンドで大丈夫か?」 ぐぐるとよく出てくるのが以下のコマンド例。 youtube-dl 'YouTube動画URL' -o - | mplayer - -novideo ハイフンは標準入出力。-o は出力ファイルを指定するスイッチだが、ハイフンを与えているので、出力先は標準出力となる。 それをパイプで繋げ、mplayer - で標準出力を受け取って再生。-novideoスイッチにより、サウンドのみとなる。 youtube-dl は本来(?)YouTube動画 DL ツールだが、こうしたコマンドの組み合わせで実質ストリーミング再生として動作する。実に単純明快でスマートなコマンド。美しい。「丈夫だ、問題ない」 ところが実際に試してみると、動画によっては途切れ途切れの再生となってしまう。また、1時間以上あるような長めの動画ではエラーが発生する(YMMV)。 どうすればスムーズに再生できるか 公式 と睨めっこしながら試行錯誤することとなった。 その後、youtube-dl の後継、上位互換の yt-dlp を試したところ、曲の途切れも殆ど無く、長めの動画でも再生でき感心。また、youtube-dl ではプレイリストの連続再生が上限 100 に制限されていたが、yt-dlp では撤廃されている。 色々と進化、改良されている模様。何だよ最初からこっちを使えば良かったのか、って話だけど。折角色々と調べたのでおススメのスイッチ指定を情報展開する。「神は言っている、このコマンドで完結する運命ではないと・・・」 環境は Pi OS Lite だが、Linux 汎用と思われ(多分)。 インストール まずは yt-dlp。wget を使用するなら以下。 sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp sudo chmod a+rx /usr/local/bin/yt-dlp 実行例(クリックで開閉) $ sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp --2022-01-04 22:15:41-- https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp github.com (github.com) をDNSに問いあわせています... 13.114.40.48 github.com (github.com)|13.114.40.48|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://github.com/yt-dlp/yt-dlp/releases/download/2021.12.27/yt-dlp [続く] --2022-01-04 22:15:42-- https://github.com/yt-dlp/yt-dlp/releases/download/2021.12.27/yt-dlp github.com:443 への接続を再利用します。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://objects.githubusercontent.com/github-production-release-asset-2e65be/307260205/02e2617b-0775-4d02-a98e-a53a59289390?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220104%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220104T131542Z&X-Amz-Expires=300&X-Amz-Signature=82550cf395be61afc738144439441a5dfd07bf13817196b429c548bd46646224&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=307260205&response-content-disposition=attachment%3B%20filename%3Dyt-dlp&response-content-type=application%2Foctet-stream [続く] --2022-01-04 22:15:42-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/307260205/02e2617b-0775-4d02-a98e-a53a59289390?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220104%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220104T131542Z&X-Amz-Expires=300&X-Amz-Signature=82550cf395be61afc738144439441a5dfd07bf13817196b429c548bd46646224&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=307260205&response-content-disposition=attachment%3B%20filename%3Dyt-dlp&response-content-type=application%2Foctet-stream objects.githubusercontent.com (objects.githubusercontent.com) をDNSに問いあわせています... 185.199.109.133, 185.199.110.133, 185.199.111.133, ... objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2295858 (2.2M) [application/octet-stream] `/usr/local/bin/yt-dlp' に保存中 /usr/local/bin/yt-dlp 100%[=====================================================================>] 2.19M 2.00MB/s 時間 1.1s 2022-01-04 22:15:44 (2.00 MB/s) - `/usr/local/bin/yt-dlp' へ保存完了 [2295858/2295858] $ sudo chmod a+rx /usr/local/bin/yt-dlp その他 python な人には PIP 等々、色々と用意されているので、詳細は 公式 の INSTALLATION項参照。 mplayer は標準パッケージで用意されているので以下。 sudo apt update -y && sudo apt full-upgrade -y sudo apt install mplayer -y 実行例 「一番いいスイッチを頼む」 御託はいいからってことで結論としては以下。youtube-dl でもこのスイッチ指定なら途切れない。 yt-dlp 'YouTube動画URL' --no-continue --no-progress -f 140 -o - | mplayer -af volnorm - YouTube動画URL はプレイリストも指定可。というか今回の目的としてはそれが前提。各スイッチの意味は以下。 --no-continue Ctrl + c 等で強制終了した後、再度実行すると再生に失敗する場合がある。これは内部的にレジューム機能が働いて、それがうまく動作しないから。今回のケース(ストリーム再生)では不要なので止める。(というか無理) --no-progress 要らないっしょ。更に表示量を減らしたい場合は --quiet も追加で。あまり変わらないが。 -f 140 ポイントがこれ。そもそもオーディオだけ必要なのに動画を DL するのは無駄。オーディオだけ DL する。これにより、mplayer側のスイッチ -novideo が不要になる。 尚、-fスイッチのパラメタ 140 の意味は以下参照。(ID列) フォーマット確認例(クリックで開閉) $ yt-dlp -F https://www.youtube.com/watch?v=cjC5BzKlk-A ID EXT RESOLUTION FPS | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO -------------------------------------------------------------------------------------------------------------- sb2 mhtml 48x27 | mhtml | images storyboard sb1 mhtml 80x45 | mhtml | images storyboard sb0 mhtml 160x90 | mhtml | images storyboard 139 m4a | 1.91MiB 47k https | audio only mp4a.40.5 47k 22050Hz low, m4a_dash 249 webm | 2.12MiB 52k https | audio only opus 52k 48000Hz low, webm_dash 250 webm | 2.79MiB 69k https | audio only opus 69k 48000Hz low, webm_dash 140 m4a | 5.09MiB 127k https | audio only mp4a.40.2 127k 44100Hz medium, m4a_dash 251 webm | 5.49MiB 137k https | audio only opus 137k 48000Hz medium, webm_dash 17 3gp 176x144 12 | 3.30MiB 82k https | mp4v.20.3 82k mp4a.40.2 0k 22050Hz 144p 160 mp4 256x144 30 | 3.25MiB 81k https | avc1.4d400c 81k video only 144p, mp4_dash 278 webm 256x144 30 | 3.79MiB 94k https | vp9 94k video only 144p, webm_dash 133 mp4 426x240 30 | 6.58MiB 164k https | avc1.4d4015 164k video only 240p, mp4_dash 242 webm 426x240 30 | 7.56MiB 188k https | vp9 188k video only 240p, webm_dash 134 mp4 640x360 30 | 16.01MiB 399k https | avc1.4d401e 399k video only 360p, mp4_dash 18 mp4 640x360 30 | 24.55MiB 612k https | avc1.42001E 612k mp4a.40.2 0k 44100Hz 360p 243 webm 640x360 30 | 13.90MiB 346k https | vp9 346k video only 360p, webm_dash 135 mp4 854x480 30 | 30.11MiB 751k https | avc1.4d401f 751k video only 480p, mp4_dash 244 webm 854x480 30 | 24.79MiB 618k https | vp9 618k video only 480p, webm_dash 136 mp4 1280x720 30 | 57.11MiB 1425k https | avc1.4d401f 1425k video only 720p, mp4_dash 22 mp4 1280x720 30 | ~63.67MiB 1552k https | avc1.64001F 1552k mp4a.40.2 0k 44100Hz 720p 247 webm 1280x720 30 | 50.90MiB 1270k https | vp9 1270k video only 720p, webm_dash 一つの動画コンテンツには複数のフォーマットが用意されていて、-Fスイッチで確認することができる。 VCODEC列が audio only の物がオーディオのみの物(そのまんま)。 因みに opus形式(ACODEC列)は mplayer が対応していないので注意。 それと、yt-dlp には、最善の音質フォーマットの物を自動で選択する -f bestaudio や -f ba スイッチが用意されているが、今回のケースではうまく機能しなかった。 また、オーディオを抽出する -x や --extract-audioスイッチが用意されているが、これは一旦動画ファイルを DL し、そこからオーディオを抽出するので逆に無駄。というか、今回のような使い方では上手く動かない。 -af volnorm YouTube動画を連続再生していると困るのが音量がバラバラであること。ということで音量のノーマライズ。これは mplayer側の仕事なので引数で与えている。意味は以下参照。 mplayer(1) - Linux man page volnorm[=method:target] Maximizes the volume without distorting the sound. Sets the used method. 1: Use a single sample to smooth the variations via the standard weighted mean over past samples (default). 2: Use several samples to smooth the variations via the standard weighted mean over past samples. Sets the target amplitude as a fraction of the maximum for the sample type (default: 0.25). イマイチ methodパラメータ 1 2 の違いが聞き分けられないが(耳が悪い?)ポイントは targetパラメータ。 デフォルトでは音が大きすぎて割れたりする場合、-af volnorm=1:0.01 のようにデフォルト値(0.25)より小さい値を指定し調整すること。 その他使えそうなスイッチ スイッチ 意味 --playlist-reverse プレイリスト逆順再生 --playlist-random プレイリストランダム再生 --playlist-start NUMBER プレイリストの開始曲指定 --playlist-end NUMBER プレイリストの終了曲指定 尚、youtube-dl を使用する場合は以下のスイッチも指定した方が良い。 --ignore-errors 連続再生していてもエラーが発生すると終了してしまう。ツールの性質上、ネットワークエラー等の発生は珍しいことではないし致命的でもない。 「こまけぇこたぁいいんだよ」の精神で、エラーが発生しても無視して連続再生して欲しい場合は指定すること。(リトライもしてくれるみたいだし) yt-dlp ではこれがデフォルトになっているので指定する必要なし。逆にエラー発生時に中断して欲しい場合は --no-abort-on-error を指定すること。 --no-cache-dir youtube-dl で以下のエラーが発生する場合がある。 ERROR: unable to download video data: HTTP Error 403: Forbidden A: 287.7 (04:47.6) of 168.0 (02:47.9) 7.1% Invalid return value 0 for stream protocol Invalid return value 0 for stream protocol A: 287.8 (04:47.7) of 168.0 (02:47.9) 7.1% Exiting... (End of file) ぐーぐる先生によればこれはキャッシュ破損が原因らしく、以下コマンドでキャッシュを初期化すると直る。 youtube-dl --rm-cache-dir しかし毎度これでは面倒で、--no-cache-dirスイッチ指定によりこの問題は発生しなくなる。 yt-dlp では改良されているのかこのエラーは発生しない模様(AFAIK)。 Tips 最新化方法 これは YouTube に関連したツール、アドインの宿命だが、YouTube側の仕様が変更になると、ツールが動かなくなったりすることがある。 その場合は以下コマンドを実行する等し最新化すること。 yt-dlp -U それでも動かない場合? 公式に報告を上げるか、自力で原因を調べてソースを直すしか。その為のオープンソースなんだし。 URL 指定方法 公式の使用法の説明で yt-dlp [OPTIONS] [--] URL [URL...] とあるが、URL はシングルクォーテーションかダブルクォーテーションで囲むこと。 そうしないと実行に失敗するばかりか、色々とおかしな動きになる。今回のような使用方法の場合に限った話かもしれないが。(おかしな動きに関しては説明が面倒なので詳細は略、興味がある方は試して欲しいが苦情は受け付けない) 設定ファイル スイッチを色々と追加していくとコマンドの見通しが悪くなってしまう。スイッチは設定ファイルに格納すればすっきりする。設定ファイルは yt-dlp が配置されているパスに yt-dlp.conf で作成する。 $ cat /usr/local/bin/yt-dlp.conf --no-continue --quiet --no-progress --playlist-random -f 140 -o - 上記のような設定ファイルを用意すれば実行コマンドは以下で済む。 yt-dlp 'YouTube動画URL' | mplayer -af volnorm - 逆に設定ファイルを無視したい場合は --ignore-configスイッチを指定する。 yt-dlp --ignore-config 'YouTube動画URL' -o - | mplayer - -novideo YouTubeログインアカウントが必要な場合 自前で非公開のプレイリストを YouTube 上に作成しそれを利用する場合、-u <ユーザー名> -p <パスワード> を引数で与える。 しかし機能しないケースがあり、その場合は以下参照。(yt-dlp でも同様) 【youtube-dl】cookieを使ってログインする また、ブラウザが動く環境ならそっちからクッキー情報を引っ張ってくることもできるらしい。(未検証) 公式参照。 --cookies-from-browser BROWSER[+KEYRING][:PROFILE]                                    The name of the browser and (optionally)                                    the name/path of the profile to load                                    cookies from, separated by a ":". Currently                                    supported browsers are: brave, chrome,                                    chromium, edge, firefox, opera, safari,                                    vivaldi. By default, the most recently                                    accessed profile is used. The keyring used                                    for decrypting Chromium cookies on Linux                                    can be (optionally) specified after the                                    browser name separated by a "+". Currently                                    supported keyrings are: basictext,                                    gnomekeyring, kwallet 尚、youtube-dl にはこのスイッチは無いので注意。(yt-dlp の拡張機能) というか通常コマンドライン環境にブラウザは入っていないと思うが。GUI 環境上のコマンドライン環境かな、使えるとしたら。 それとクッキーファイルを設定ファイルで指定する場合は、フルパス指定にしないと認識されないようなので注意。 $ cat /usr/local/bin/yt-dlp.conf --cookies /usr/local/bin/youtube.com_cookies.txt テキストファイルの再生リスト ローカルに一行一URL の再生リスト(テキストファイル)を用意し、-a や --batch-file スイッチで指定すれば連続再生できる。公式参照。 -a, --batch-file FILE                  File containing URLs to download ("-" for                                    stdin), one URL per line. Lines starting                                    with "#", ";" or "]" are considered as                                    comments and ignored アカウントがなく YouTube上にプレイリストが作成できない場合に重宝するかな。 ID指定再生 YouTube上の再生リストには、ユーザー作成の物や、運営により自動生成されたもの(ミックスリスト)がある。 YouTube(ユーチューブ)のミックスリストを分かりやすく解説 前者のプレイリストの ID のプレフィックスは PL、後者は RD。(他にもあるようだが) 少なくとも、プレフィックスが RD の物は対応していないが、それ以外の物ならこの ID 指定だけで再生できる。(URL指定ではなく) 実行例は以下。 yt-dlp PLvlum7YWrP-WtAH0PS6_WfoWs0XALtNJ_ -f 140 -o - | mplayer - とういか動画単体再生の場合でも ID 指定でいけるんだけど。 yt-dlp cjC5BzKlk-A -f 140 -o - | mplayer - URL指定は冗長なので ID指定で済めばそれに越したことはないかな。 課題 本来、mplayer は再生中にキーボード入力で操作できる。しかし、今回のような使用方法の場合、それが利かない。 例えば、ps aux | grep mplayer | grep -v grep でプロセスID を調べ、echo "p" > /proc/<プロセスID>/fd/0 と無理矢理送り込んでも上手くいかない。 原理的に無理っぽい。 連続再生の垂れ流しを想定しているが、一時停止もできたら便利なんだけど。必要に応じて音量を下げるかミュートにするしかないかな。終了は Ctrl + c で。 最後に 相変わらず騒々しい状況。 YouTube動画をダウンロードする「youtube-dl」のホスティング企業が世界3大レコード会社に訴えられる YouTube動画ダウンローダーのリポジトリをGitHubが削除、音楽業界団体からの要請に基づき これもまたこの手のツールの宿命というか便利過ぎるが故か。 とにかく多機能で驚かされるし、それに比例して公式の説明文章も膨大。正直読む気にならない、ピンポイントで音楽再生の方法だけ知りたいという方に本投稿が一助になれば幸い。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む