ホーム » t-saitoh の投稿

作者アーカイブ: t-saitoh

サーバ⚙

アーカイブ

カテゴリー

はっぴ〜・はろうぃん

{CAPTION}

添付ファイル付きメールの送信

WatchOS5 を使うと、メール添付画像を見ることができるので、監視システムなどから画像付きでメールを送りたくなった。HTML形式で画像へのリンクを送っても画像はみえない。

#!/usr/bin/perl

=head1 使用方法

mail-mixed.jp [options] 宛先... 標準入力をメール本文として送る
        -t --to 宛先
        -c --cc CC宛先
        -b --bcc BCC宛先
        -f --from 差し出し人
        -s --subject タイトル
        -a --attach 添付
        -h --html HTML形式かどうか

=cut

use warnings ;
use Getopt::Long ;
use Jcode ;
use Encode ;
use utf8 ;
use MIME::Lite ;
use File::MimeInfo::Magic ;

my $m_from = "" ;
my $m_html = 0 ;
my @m_attach = () ;
my @m_to = () ;
my @m_cc = () ;
my @m_bcc = () ;
my $m_body = "" ;

# オプションの読み込み
GetOptions( 'to=s' => \@m_to , 'cc=s' => \@m_cc , 'bcc=s' => \@m_bcc ,
            'from=s' => \$m_from ,
            'subject=s' => \$m_subject ,
            'attach=s' => \@m_attach ,
            'html' => \$m_html ,
    ) ;

# 残りのオプション To として扱う
@m_to = ( @m_to , @ARGV ) ;

# 標準入力はメール本文
while(  ) {
    $m_body .= $_ ;
}

# メール MIME::Lite用引数
my %arg = () ;

$arg{From} = $m_from ;
if ( $m_html ) {
    # $arg{Subject} = encode( 'MIME-Header' , $m_subject ) ;
    # UTF-8だと文字化けするぞ
    # $arg{Subject} = encode( 'MIME-Header-UTF_8' ,     Jcode->new( $m_subject )->utf8 ) ;
    $arg{Subject} = encode( 'MIME-Header-ISO_2022_JP' , Jcode->new( $m_subject )->jis ) ;
} else {
    $arg{Subject} = encode( 'MIME-Header-ISO_2022_JP' , Jcode->new( $m_subject )->jis ) ;
}
$arg{To}  = join( ", " , @m_to  ) if ( @m_to  > 0 ) ;
$arg{Cc}  = join( ", " , @m_cc  ) if ( @m_cc  > 0 ) ;
$arg{Bcc} = join( ", " , @m_bcc ) if ( @m_bcc > 0 ) ;
$arg{Type} = 'multipart/mixed' ;

# メール全体の作成
my $msg = MIME::Lite->new( %arg ) ;

# メール本文の作成
if ( $m_html ) {
    # HTML形式ではUTF-8を使う
    $msg->attach(
        Type => 'text/html; charset="utf-8"' ,
        Data => Jcode->new( $m_body )->utf8 ) ;
} else {
    # それ以外は日本語ISO-2022-JP
    $msg->attach(
        Type => 'text/plain; charset="iso-2022-jp"' ,
        Encoding => '7bit' ,
        Data => Jcode->new( $m_body )->jis ) ;
}

# 添付ファイルを付ける
foreach my $file ( @m_attach ) {
    if ( -r $file ) {
        my $r_file = $file ;
        # ファイル名のディレクトリ部を削除
        $r_file =~ s/^.*\/// ;
        # 添付
        $msg->attach(
            Type => mimetype( $file ) ,
            Path => $file ,
            Filename => $r_file ,
            Disposition => 'attachment' ) ;
    }
}

# メールを送る
$msg->send ;

### Local Variables: ###
### mode: perl ###
### End: ###

@TohruSaitoh-18/09/18

Windows10

iOS12

神様が良い所と悪い所を教えてくれる診断
t.co/MuPk2VocCj


この記事は@TohruSaitohのつぶやきのまとめです。

dhcp-evalの使い方

自宅ネットワークでは、利用する機器の状態を把握するために固定IPアドレスを割り振っているが、DHCP の hardware ethernet で、Mac アドレスをみて配布している。この DHCP のリース時に、状態に合わせた処理を起動するための機能がある。

on commit などで script を実行

on commit , on release , on expiry を設定すると、IPアドレス割り振り時にプログラムを起動できる。

# vi /etc/dhcp/dhcpd.conf
:
# IPアドレス割り振り時に on-commit.sh を起動
on commit {
    set clip = binary-to-ascii(10, 8, ".",
                 leased-address);
    set clhw = binary-to-ascii(16, 8, ":",
                 substring(hardware, 1, 6));
    execute("/etc/dhcp/on-commit.sh", clip, clhw);
}

# vi /etc/dhcp/on-commit.sh
#!/bin/bash
#   IPアドレスを割り振り時にメールを送る
IP=$1
MAC=$2
if [ -n "$IP" -a -n "$MAC" ]; then
    echo "$IP $MAC" \
    | /usr/bin/mail -s "dhcp on commit" foo@example.com
fi

on commit の例で示した方法は、DHCPがアドレスをリースする度に呼び出される。スクリプトは同期して行われるため、遅い処理の場合には アドレス割り振りに支障がでるかもしれない。よって、スクリプトはシンプルなものを使う必要がある。

自宅では、host { fixed-address … } で、固定しているとはいえ WiFi なスマホだと、電波強度不足で再接続が発生する時だと、頻繁にメールが届くことになる。接続情報を保存するなどの Script を書かないとウザぃ。

host 毎に script を実行

こういうことができると、状況に合わせてリースを制御したくなる。自宅で使う場合だと、子供が長い時間使っている場合には、IPアドレスのリースを失敗させて、ネットワーク接続を切りたいかもしれない。

こういう場合には、host … { } の中に、execute を埋め込むことができる。しかも、execute で実行される script の返り値で、lease を失敗させることもできる。

# /etc/dhcp/dhcpd.conf
:
host game-machine {
    hardware ethernet 00:11:22:33:44:55 ;
    fixed-address      192.168.11.222 ;
    execute( "/etc/dhcp/lease-check.sh ,
             "192.168.11.222" ,
             "00:11:22:33:44:55" ) ;
}

# vi /etc/dhcp/lease-check.sh

#!/bin/bash
#  DHCP接続を判定する script
IP=$1
MAC=$2
if [ -n "$IP" -a -n "$MAC" ]; then
    if [ アドレスを許可する条件 ]; then
        # 接続許可
        exit 1
    else
        # 接続禁止
        exit 0
    fi
fi

注意: 最初 lease-check.sh は許可するときに shell-script 成功時を表す exit 0 を返せばいいとおもったけど、逆だったな。

iOS12でインターネット共有ボタンが押せない

バグだな。IOS12のインターネット共有の画面、検索バーが表示されて、共有On/Offボタンを隠してしまい、触れない。検索バーどうやって消すの?

((追記))
ひとまず、再起動すれば、もとに戻った。

何で昼食自慢大会なの?

なぜか、家族のLINEが、ランチメニュー自慢大会になってる。

{CAPTION} みぃ〜

{CAPTION}ママ

{CAPTION}あ〜

{CAPTION}パパ

iOS12,WatchOS5インストール

夜中に目が覚めてインストール開始。起きて使ってみたけど、よく使う部分では変わりないな。
でも、操作が軽くなったように思う。
{CAPTION}

mineo 宛のメールを取り込む

子供の携帯は、mineo を使っているけど、子供の契約変更(auプラン→docomoプラン)の時に、子供のmineo メール宛に送られている確認メールに気づくのが遅れ、手間取った。

子供の mineo メールのアカウントで、転送設定すればいい…と思ったけど、mineo メールにはそんな機能は無いらしい。gmail で mineo のメールを取り込む方法もあるけど、基本は本人任せで契約変更をしたい時だけメールを確認するのなら、自宅のメールサーバに読み込むほうが手っ取り早そう。

そこで、自宅メールサーバで、mineo.jp のメールを取り込む .fetchmailrc を書き、crontab で fetchmail を実行するように設定した。

EdgeRouter-X で ssh 公開キーの登録

CUIで登録する方法

EdgeRouter-X で ConfigTree で設定できる項目は増えていて、WebUI で登録できそうなんだけど、失敗するので、CUI で登録する。

((接続元))
$ cat ~/.ssh/id_pub.rsa
ssh-rsa XXX....XXXX xxxx@server
((EdgeRouter))
$ configure
# set system login user xxxx
    authentication public-keys xxxx@server type ssh-rsa
# set system login user xxxx
    authentication public-keys xxxx@server key XXX....XXXX
# commit
# save
# exit

WebUIで登録する方法

設定ができた後だと、ConfigTree に設定内容が反映されて、WebUI での正しい設定のやり方が分かった。

WCR-1166DSを導入

色々と1FでのWiFi環境の整えるなか、先日は2FWiFiルータにレフ板を設置して、かなり改善したけど、ママが「台所で使えん!」とのクレーム。レフ板の方向からすると、1F居間が限界。ということで、親のエアコン更新した時のポイントが残っていたので、WCR-1166DS を買ってきた。Buffalo だから相性はいいだろう。

1F   駐車場
台所|居間|玄関|寝室
ーー+ーー+ーー+ーー
風呂| 座敷 | 座敷

2F |子供|子供|
  +ーー+ーー+
  | 居室  |
    (WiFi)  

検索 🔎

  My Google     Yahoo

便利サイト