ホーム » T-Saitoh (ページ 99)
「T-Saitoh」カテゴリーアーカイブ
添付ファイル付きメールの送信
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
- 09/13 仕事のサーバ用にPCを購入。 #Windows10 ついてたけど速攻で #Debian に。
iOS12
- 09/18 インターネット共有ボタンを検索バーが隠してしまう。 #iOS12 の不具合 http://tsaitoh.net/wp/2018/09/18/ios12-i…
神様が良い所と悪い所を教えてくれる診断
t.co/MuPk2VocCj
- 09/11 (神・ω・) TohruSaitohは、
(神・∀・) カリスマ性があって
(神・ω・) 知的で
(神 $(D”/ ω $(D”/ ) 思いやりがあるのじゃが……
(神・ω・) ……実は猫なんじゃよ
#神様が良い所と悪い所を教えてくれる診断
shindanmaker.com/824543
この記事は@TohruSaitohのつぶやきのまとめです。
dhcp-evalの使い方
自宅ネットワークでは、利用する機器の状態を把握するために固定IPアドレスを割り振っているが、DHCP の hardware ethernet で、Mac アドレスをみて配布している。この DHCP のリース時に、状態に合わせた処理を起動するための機能がある。
- dhcp-eval(isc-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 を返せばいいとおもったけど、逆だったな。
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 での正しい設定のやり方が分かった。





みぃ〜
ママ
あ〜
パパ
