V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

カテゴリー: settings

CATEGORY ARCHIVE

wake on lanの実現方法の一つ

背景

wake on lan(以降wol)を、機種変前のスマホを使って実現しようとしていたが外出中にスマホがスリープ?してしまい、外出先からwolが出来ない。そこでスマホを使わずraspberry pi(以降raspi)を使う別の方法を考えた。

前提条件 

  • raspiにsylpheedがインストール済み
  • sylpheedから周期的にポーリング受信可能なメールアドレスあり(私の場合自宅サーバー上)
  • raspiにwakeonlanがインストール済み

sylpheedでの設定

sylpheedでメッセージ受信したらコマンド実行 に一般設定で設定する
例:

/home/pi/tools/wolmail.sh

他に、2分ごとにメールをチェックする様にした。自宅サーバーでなければ、5分ごととかもう少し間隔を長めにした方が良いかもしれない。 起動までに時間がかかるが。

メール受信時に実行するシェル

wolmail.shを以下の様にした。試行錯誤で書いたものなので効率の良くないコードではあるが。

#!/bin/bash

ls -trl /home/pi/Mail/inbox | tail -1  >/home/pi/logs/wolsh.log

cat /home/pi/logs/wolsh.log | awk  '{printf("/home/pi/Mail/inbox/%s\n",$9)}' >/home/pi/logs/woltemp
prefile=/home/pi/logs/woltemp

while read filename
do
 cat $filename |awk -f /home/pi/tools/wolmail.awk

done < ${prefile}

wolsh.log、woltempは作業用のファイル

Pathは、念のためフルパスで記述。 sylpheedの受信メールはMail/inboxにあった。最新のものを使用。9番目のフィールドが該当メールのファイル名(数字)であった。

wakeonmailするためのawkスクリプト

awkスクリプトを、wolmail.awkとして下記の様に作成した。

BEGIN{
}
{
if (NF >=2 ) {
  if ($1 == "wolkeyword")  {
   for (i=2;i<=NF;i++) {
      if ($i=="aaaaa") system("/home/pi/tools/wol-aaaaa.sh")
      if ($i=="bbbbb") system("/home/pi/tools/wol-bbbbb.sh")
      if ($i=="ccccc") system("/home/pi/tools/wol-ccccc.sh")
  }

  }
 }
}
END{
  print "wol sent end" > "/home/pi/logs/wol_mail_status"
}

wol-xxxxx.shは、wakeonlanコマンドのためのシェル

また、上記は3台に対応

wol用のメール

subjectもしくは本文内に、wolkeyword xxxxx の様に記述してメールする事で良い

無線lanカードのドライバーを入れていたらwake on lanが使えなくなったので再設定

再度調べて、今回は次のサイトを参考にして対処した。
https://blog.janjan.net/2022/08/10/ubuntu-wake-on-lan-settings

現状確認

sudo ethtool enp5s0 | grep -i wake

Wake-on: d になっていた。
Wake-on: g でないとダメとの事。

設定用ファイル作成

nano mytools/wakeonlan.sh で、下記内容のファイル作成

#!/bin/sh
/sbin/ethtool -s enp5s0 wol g

その後、実行属性を与える

sudo chmod +x mytools/wakeonlan.sh

サービスを登録

登録用ファイル作成

sudo nano /etc/systemd/system/wakeonlan.service


[Unit]
Description=Enable Wake-On-LAN

[Service]
Type=simple
ExecStart=/home/myhomename/mytools/wakeonlan.sh
Restart=always

[Install]
WantedBy=multi-user.target

namename はあなたのlogin名

サービスの登録

sudo systemctl enable wakeonlan.service
sudo systemctl start wakeonlan.service

再起動しておしまい

おまけ web経由で切断

電源onだけでは、RDPか何かを許可しない限り電源を切れない。そこでcockpitをインストール

 sudo apt install cockpit
 sudo systemctl enable cockpit.socket
  
 sudo ufw allow 9090/tcp

これで、webに9090ポートでアクセスするとcockpitが起動しweb経由でいろいろ出来る

別PCで使っていたIntel dual band wifi AC-7265無線lanカードをubuntuマシンに移す

経緯

別PCで無線lanカードを210NGW機種に交換したので、それまで使っていたAC7265が余った。それで、ubuntu 2204LTSで使っていたPCに装着する事にした。装着して立ち上げたがwifiのSSIDが出てこない。そこで、driverが無いのだと思い以降の事を行った。正しいかどうかはわからないが、とろあえず動いているのでよしとする。

ドライバーのインストール

wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-7265-ucode-25.30.14.0.tgz

tar -xzvf iwlwifi-7265-ucode-25.30.14.0.tgz

sudo cp iwlwifi-7265-ucode-25.30.14.0/iwlwifi-7265-14.ucode /lib/firmware
sudo cp iwlwifi-7265-ucode-25.30.14.0/iwlwifi-7265D-14.ucode /lib/firmware
  
sudo apt install --reinstall linux-firmware
sudo reboot

lan内でのmailは可能にしていたが、lan外からは出来ていなかった。それへ対応

問題点

lan外にmailしようとしたところ、relay access deniedとなって送信拒否された。
smtp認証が必要との事。 そこでsmtp認証を追加した。

smtp認証追加

main.cfに認証用設定追加

sudo nano /etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_service = smtp
smtpd_sasl_type = dovecot
smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unautcheck_client_access hash:/etc/postfix/reject_client,
  reject_unauth_destination

reject_clentが無いとエラーになったので作成

sudo nano /etc/postfix/reject_client

設定を反映
sudo /usr/sbin/postmap /etc/postfix/reject_client
出来たことを確認
ls -la /etc/postfix/reject_client.db

SMTP認証用のソフトが足りなかったので、追加インストール

sudo apt-get install sasl2-bin

 sudo sasldblistusers2
 sudo chgrp postfix /etc/sasldb2
 sudo chmod 640 /etc/sasldb2
 #sudo mv sasldb2 sasldb2_org
 ls /etc/sasldb2

master.cfのsmtp認証設定の確認

 sudo nano  /etc/dovecot/conf.d/10-master.conf
 
 service auth {
   # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group=postfix

補足:忘れていたのでパスワード再設定

 sudo passwd -d username
 sudo passwd  username
V-antena and Tanimoto's page

あなたはIPv4でアクセスしています