スキップしてメイン コンテンツに移動

投稿

Raspberry Pi に ssh で 接続できない 又は 接続したがすぐに切断されたりする現象について

Raspberry Pi ZeroW に ssh接続 を行い操作をしていたが、いつ頃からかうまく繋がらなくなった。 症状としては次のような状況だった。 ssh接続するもクライアント側のモニタには何も表示されない うまく接続できてもすぐに切れてしまう キーボードからの入力が表示されるまでにとても時間がかかる このような状況であったが、vncでは接続できていた。 その為、vncで画面を映し、ターミナルを立ち上げて操作することで凌いでいた。 この状況の原因ははっきりとわからないが、次の記事を参考に対応した。 Disable power management in Stretch https://www.raspberrypi.org/forums/viewtopic.php?t=194619 行うことは次の2つ。 無線モジュールの電源管理を無効にする sshd_config の ClientAliveInterval を有効にする 無線モジュールの電源管理 対応したラズベリーパイはbusterである。 $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster 起動時のログを確認してみるとオンボードの無線LANの省電力モードが有効になっている。 $ dmesg | grep brcm [ 15.998658] brcmfmac: F1 signature read @0x18000000=0x1541a9a6 [ 16.018794] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 [ 16.019229] usbcore: registered new interface driver brcmfmac [ 16.285...

仮想環境 on python3

サポートが2020年1月1日に終わり、python2 の寿命は尽きた。 python3とは互換性が無いため、python3への移行はなかなか進まなかった。 pythonは人気のある言語であったので、 制作された多くのソフトウェア資産がpython2であったことが移行が遅くなった理由だろう。 ここでは学習用の python3 環境を構築する手順を記しておく。 pythonの導入確認 まず、python3 が導入されているかを確認する。 次のコマンドでバージョンが表示される。 $ python3 -V Python 3.7.3 コマンドはpythonでもいいが、ver.2系とver.3系の両方がある場合、2系を指す場合があるため注意。 $ python -V Python 2.7.16 入っていないのなら公式サイトからダウンロードするか、 aptやyumを用いてインストールを行う。 パッケージ管理コマンド dnf は python3 で作られているので dnf が入っていればpython3は導入済みである。 Python  https://www.python.org/ pythonスクリプトの実行 pythonのスクリプトを実行するには幾つかの方法がある。 インタラクティブモード pythonコマンドで実行 スクリプトを直接実行 インタラクティブモード 簡易的なプログラムの実行に用いる。 コマンドラインでpython3を直接実行することでインタラクティブモードに移行する。 $ python3 Python 3.7.3 (default, Dec 20 2019, 18:57:59) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello, ...

テキストエディタの自動インデントとコメントアウトの方法

インデント コピーしてきて継ぎ接ぎのファイルを自動インデントする。 vi コマンド入力 gg=G ggが先頭、Gが文末にカーソルが移動するコマンド。 = が文章を適当にインデント Emacs 次を入力し文章全体を選択。 C-x h その後、インデントを行う。 C-M-\ コメントアウト vi C-vで範囲を選択し、Shift-i で挿入モードに切り替え入力。 挿入モードを終わると一括入力される。 Emacs M-; リージョンを選択すれば選択範囲のコメントアウト。 してないなら行末尾にコメント追加。

LS-WTGLをハックし、sshログインする

初期状態のリンクステーションは外部からの接続が制限されている。 この為、sshでログインできるようにハックする。 ここではDebian上で操作する。 javaの実行環境 java の実行環境構築する。 Java Runtime Environment (JRE) をインストールしておけばいいはず。 # apt install openjdk-11-jre ツールの導入と実行 リンクステーション向けにツールが公開されている。 acp_commander.jar https://github.com/Stonie/acp-commander このファイルを置いたディレクトリにて次のコマンドを入力するとヘルプが見られる。 $ java -jar acp_commander.jar リンクステーションのIPアドレスが 192.168.0.2 の時、 rootパスワードを削除し、telnetサービスを立ち上げるのは次のコマンドで行う。 $ java -jar acp_commander.jar -t 192.168.0.2 -o これでリンクステーションにtelnetで接続可能になった。 rootパスワードの設定 rootのパスワードを設定しておく。 # passwd Changing password for root Enter the new password (minimum of 5, maximum of 20 characters) Please use a combination of upper and lower case letters and numbers. Enter new password: Re-enter new password: Password changed. sshサービスの起動 telnetで接続後、/usr/local/sbin/sshd を実行するとsshサービスが起動できる。 起動前に /etc/sshd_config を変更し設定を変える必要がある。 # sed -i 's/\#PermitRootLogin no/PermitRootLogin yes/' /etc/sshd_config # grep PermitRo...

LS-WTGL の 復旧 with CentOS8

リンクステーションのファームを初期のものに置き換える作業を行った。 リンクステーションはLS-WTGL ver.1 である。USBが一つしかないタイプ。 CentOS8を使い復旧を行った。 初期状態 Debianを入れようとして試行錯誤していたが放ったらかしになっていた。 電源を入れると赤いランプが点滅する状態。 この状態はbootファイルが読み込めないと起きる。 初期化したい場合は /boot ディレクトリ内にある次のファイルの名前を変えると発生する。 uImage.buffalo initrd.buffalo この状態でリセットスイッチを長押しするとEMモードに入る。 EMモードはTFTPサーバ(192.168.11.1)からファームウェアをダウンロードして実行するモード。 これを利用し、初期ファームウェアを導入する。 ファームウェア配信用サーバの準備 TFTPサーバーを導入 on CentOS 8 https://atsreport.blogspot.com/2020/05/tftp-on-centos-8.html TFTPサーバを立てる。 上の記事通りなら、/var/lib/tftpboot がtftpサービスで公開される。 配信用の2つのファイルをこのディレクトリに配置する。 uImage.buffalo 、 initrd.buffalo IPアドレスを192.168.11.1に変更しておく。 次のコマンドを使うと比較的簡単に変更できる。 # nmtui この段階でリンクステーションのリセットスイッチを押すとファイルを拾いに来る。 その様子は次のコマンドで確認できる。 なお、標準でtftpサーバは69番ポートを利用する。 $ ss -u LAN内なら数秒でサーバからデータを持っていくので その後、リンクステーション内の構築が自動的に行われる。 赤いランプが点滅し、HDのアクセス音が聞こえてくると設定中である。 しばらくすると設定は完了する。 うまくいかない場合 firewall を確認しておく。 特に問題なければ無効にしておいてもいい。 # systemctl stop firewalld tftpサービスが立ち上がっているか確認してみる。 必要に応...

perl の https通信 が出来なかったので対処した件

いつもhttpsの接続方法を調べているのでまとめることにした。 ここではDebianでの話になっている。 $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" $ perl --version This is perl 5, version 28, subversion 1 (v5.28.1) built for x86_64-linux-gnu-thread-multi (with 61 registered patches, see perl -V for more detail) LWP::Protocol::https このモジュールを入れると関連するモジュールも入れてくれるのでこれをインストールする。 # cpanm LWP::Protocol::https エラーが出てインストールできない場合、何かが入っていない為ログファイルを確認する必要がある。 今回はこの辺をインストールした。 # apt install gcc # apt install libssl-dev # apt install zlib1g-dev gccがないとコンパイルできないと言うエラーが出る。 libssl-dev は openssl のヘッダファイルがないとエラーが出る。 zlib1g-dev は /usr/bin/ld: -lz が存在しないとエラーが出る。 インストールが出来たら、試しにFeedPPのサイトのサンプルを動かしてみた。 [Perl] XML::FeedPP - R...

TFTPサーバーを導入 on CentOS 8

CentOS8 に TFTPサーバーを構築する。 日本語のサイトは xinetd 経由で動作させる記述が多いが、出来るだけ余計なものを導入したくないので systemd で動作をさせた。 [参考] Configure TFTP Server on CentOS 8 https://linuxhint.com/tftp_server_centos8/ インストール 次のコマンドでインストール出来る。 $ sudo dnf install tftp-server インストール後の状態確認 systemdのユニットファイルを確認してみる。 $ systemctl list-unit-files 300近くあるので制限して表示すると2つのファイルが見つかる。 $ systemctl list-unit-files | grep tftp tftp.service indirect tftp.socket disabled それぞれのファイルは次の場所にある。 /usr/lib/systemd/system/tftp.service /usr/lib/systemd/system/tftp.socket 中身については以下の通り。 $ cat /usr/lib/systemd/system/tftp.service [Unit] Description=Tftp Server Requires=tftp.socket Documentation=man:in.tftpd [Service] ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot StandardInput=socket [Install] Also=tftp.socket $ cat /usr/lib/systemd/system/tftp.socket [Unit] Description=Tftp Server Activation Socket [Socket] ListenDatagram=69 [Install] WantedBy=sockets.target ...