2018年1月31日水曜日

Excel 両面印刷 できない

最近、Excelでうまく両面印刷ができずに困っていました。そこで、検索エンジンで
Excel 両面印刷 できない
で探してみると、以下のWWWページを見つけました。
Excel で 2つのシートを選択し、両面印刷を実行しても両面印刷できません。
http://support.brother.co.jp/j/b/faqend.aspx?c=jp&lang=ja&prod=hl6050dn&faqid=faq00010322_000
内容を以下に引用します。
Excel のシートは 1枚ごとにプリンターの設定を個別に保持しています。

本機では、各シートのプリンターの設定が完全に一致すれば、ひとつのジョブとして扱う機能が実装されています。
(ただし、Windows 2000/ XP、Windows NT4.0 のみ)

別々のシート同士で 両面印刷を行いたい場合は、各シートごとにページ設定を行ない、両面印刷を有効に設定してください。

これにより、両面印刷が可能になります。
試してみるとうまくいきました。この仕様は、私には罠だと思います。

2018年1月29日月曜日

Using Ubuntu 16.04 server with DHCP/Dynamic DNS system on FreeBSD 11

I run Ubuntu 16.04 server on FreeBSD bhyve. On this system, I found that default configuration of dhcp client of Ubuntu 16.04 did not resgister its hostname to DHCP/Dynamic DNS server on FreeBSD well.

When I searched this promblem with search engines, I found some configurations. I added following setting to my dhcpclient.conf, 
$ cat /etc/dhcp/dhclient.conf 

send dhcp-lease-time 600;


$
But this setting is not stable at first. After rebooting, and on next day, I can sea the hostname via dynamic dns.

I also refferd following blogs. But unfortunately, these settings were not effective for my configuration.
DHCPで立てた社内サーバにマシン名でアクセスできるようにする
http://cs.hatenablog.jp/entry/2014/01/31/104605


ドメインがexmaple.comでマシン名がmyhostだったら、dhclientの設定ファイルに次の設定を加えます。
send fqdn.fqdn "myhost.example.com";
send fqdn.server-update on;


dhcpでにホスト名を自動登録する
http://d.hatena.ne.jp/pekeq/20081201/p1


/etc/dhclient-eth0.conf を編集して以下を追記する。
send fqdn.fqdn "example.pekeq.com.";
send fqdn.encoded false;
send fqdn.server-update on;

追記
なんか動きが違うなぁ。ソース見ないとなんともわからんかも。

Ubuntu 16.04サーバーをdhcp/dynamic dns環境で使う

FreeBSDのbhyve環境でUbuntu 16.04サーバーをインストールして使っています。このとき、デフォルトのUbuntu 16.04のdhcpクライアントの設定は、FreeBSD 11で動くDHCP/Dynamic DNS環境ではうまくDNSに名前を登録できないことがありました。

検索エンジンで探してみたところ、以下の設定をデフォルトのdhcpclient.confに加えると、うまくいくようです。
$ cat /etc/dhcp/dhclient.conf 

send dhcp-lease-time 600;


$
他にも以下のブログにあるような設定も試してみましたが、こちらは私の環境では有効でありませんでした。また上記の設定をしても、起動後しばらくは不安定で、安定して名前がつくようになったのは次の日ぐらいでした。これはよくわかりません。
DHCPで立てた社内サーバにマシン名でアクセスできるようにする
http://cs.hatenablog.jp/entry/2014/01/31/104605


ドメインがexmaple.comでマシン名がmyhostだったら、dhclientの設定ファイルに次の設定を加えます。
send fqdn.fqdn "myhost.example.com";
send fqdn.server-update on;


dhcpでにホスト名を自動登録する
http://d.hatena.ne.jp/pekeq/20081201/p1


/etc/dhclient-eth0.conf を編集して以下を追記する。
send fqdn.fqdn "example.pekeq.com.";
send fqdn.encoded false;
send fqdn.server-update on;

追記
なんか動きが違うなぁ。ソース見ないとなんともわからんかも。

調べた
http://www.linux.or.jp/JM/html/dhcp/man5/dhcp-options.5.html に書いてあった。ソースコード上の場所はclient/dhclient.cのclient_dns_update()の部分。
  • fqdn.server-update onだと、DHCPサーバに対してDNS updateするよう依頼する。DHCPサーバ側が対応していなければupdateはかからない
  • fqdn.server-update offだと、dhclient自身がDNS updateする
なので、fqdn.server-update onで試して、ダメだったらoffに変えてやればいいのかな。
ただ、FreeBSD 11のbhyve環境でうまくいかないということなので、この環境でなければ、上記の設定は不要かもしれません。

2018年1月27日土曜日

FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするための設定 - 2

FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするときに少し苦労しました。設定は、
FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするための設定 - 1
http://www.sakashita-net.jp/2018/01/freebsd-11nisubuntu-1604nis-1.html
だけで終わりかと思ったら、まだありました。

Ubuntu 16.04ではシェルは/binにあります。FreeBSD 11は追加のシェル、たとえばbashやzshは/usr/local/binにあります。この状況でNISでユーザーを共有しようとすると、シェルの場所を統一する必要があります。変更が少ないことを優先して、FreeBSD 11で、これらのシェルについて/binから/usr/loca/binへシンボリックリンクを作ることにしました。
$ cd /bin
$ ls -l *sh
lrwxr-xr-x  1 root  wheel      19  1月 11  2017 bash -> /usr/local/bin/bash
-r-xr-xr-x  2 root  wheel  423784  1月 16 12:24 csh
-r-xr-xr-x  1 root  wheel  161936  1月 16 12:24 sh
-r-xr-xr-x  2 root  wheel  423784  1月 16 12:24 tcsh
lrwxr-xr-x  1 root  wheel      18  1月 11  2017 zsh -> /usr/local/bin/zsh
$
そしてNISサーバーでのシェルの記述をすべて/binに変更しました
$ ypcat passwd

user1:x:2002:2002:USER1:/home/user1:/bin/bash

$
すると、このユーザーでpasswdコマンドでパスワード変更ができなくなりました。
$ passwd
Changing local password for user1
Old Password:
New Password:
Retype New Password:
passwd: pam_chauthtok(): error in service module
$
エラーメッセージは以下のようになっています。
$ sudo cat /var/log/message

Jan 6 12:44:13 host rpc.yppasswdd[108]: /bin/bash is not a valid shell
Jan 6 12:44:13 host rpc.yppasswdd[108]: rejecting change attempt: bad arguments
Jan 6 12:44:13 host rpc.yppasswdd[108]: client address: 172.27.40.1 username: ss
Jan 6 12:44:13 host yppasswd: in pam_sm_chauthtok(): yppasswd_remote(): NIS password update failed: kona: RPC: Server can't decode arguments


$
/bin/bashが/etc/shellsに入っていないのでエラーになっているようです。こんなところで、/etc/shellsが関係するとは思いませんでした。さっそく/etc/shellsに追加しました。
$ cat /etc/shells
# $FreeBSD: releng/11.1/etc/shells 59717 2000-04-27 21:58:46Z ache $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/local/libexec/git-core/git-shell
/usr/local/bin/bash
/usr/local/bin/rbash
/bin/bash
/bin/zsh
$
これについて調べてみると以下に記述がありました。
RPC.YPPASSWDD
https://linuxjm.osdn.jp/html/ypserv/man8/rpc.yppasswdd.8.html

-e [chsh|chfn]
    デフォルトでは、 rpc.yppasswdd は passwd エントリにおけるシェルや GECOS フィールドのユーザーによる変更を許さない。 -e オプションを用いると、これらのそれぞれを有効にできる。 ypchsh(1) のサポートを有効にした場合には、ユーザーが選択できるシェルをすべて /etc/shells に記述する必要があることに注意すること。 
私が見た範囲ではFreeBSDのmanには記述がないように思えます。

FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするための設定 - 1

FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントにしようとしたときに、すこし大変だったので、以下に作業メモをまとめます。

FreeBSDはすでにNISサーバーとなっており、他のFreeBSDをNISクライアントとした状況では確かに動いていました。ところが、ここにUbuntuをNISクライアントとして加えようとした場合に、どうしてもNISでパスワードを参照できず、UbuntuでNIS上にあるユーザーでログインできません。

このような状況はあまりないのか、検索システムで探してもそれらしい事例がありません。いろいろと試みてているうちに、ふとNISのユーザーでログインできるようになりました。ただ意図したわけでないので、なにが有効なのすぐにわかりませんでしたが、調べてみいくと、
  • Ubuntuの/etc/passwdにだけ、NISにあるユーザーを加えた。
  • /etc/shadowには加えていない
という状況でうまくログインできることがわかりました。

つまり、FreeBSDが動くNISサーバーにある/etc/passswdのうち、ログインするユーザー分をUbuntuの/etc/passwdに追加すればよいようです。しかし、これでは、あまりNISを利用する意味がありません。ここで、FreeBSDとUbuntuの/etc/passwdの形式を見比べていると、あることに気が付きました。
  • FreeBSDの/etc/passwd
    sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
  • Ubuntuの/etc/passwd
    sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
パスワードエントリが「*」と「x」で違います。もしかしてと思い、確かめてみると…
$ ypcat passwd | grep sshd
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
$
NISもpasswdのパスワードエントリは「x」です。もしかして、Ubuntuはpasswdのパスワードエントリが 「x」である必要があるのでしょうか? もしかするとNISのpasswdデータベースを作るところで、「*」を「x」に置き換えてしまえばいいのかもしれません。そこで、試してみると、ログインできるようになりました…。

ということで、Ubuntu 16.04では/etc/passwdのパスワードエントリが「*」でないといけないようです。なので、FreeBSD 11でNISのpasswdデータベースを作るMakefileを以下のように変更しています。ただ、このとき/var/yp/Makefileは/var/yp/Makefile.distへのシンボリックリンクになっているので、注意が必要です。Makefileをいったん削除してから、Makefile.distからコピーしてから変更するのがよいでしょう。
$ cat  /var/yp/Makefile

MV  = @/bin/mv -f
RMV  = /bin/mv -f

SED = /usr/bin/sed


passwd.byname: $(PASSWD)
        @echo "Updating $@..."
        @$(AWK) -F: '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
                print $$1"\t"$$0 }' $(PASSWD) \
                | $(SED) 's/^\([^:]*\):[^:]*:/\1:x:/' \
                | $(DBLOAD) -f -i $(PASSWD) -o $(YPMAPDIR)/$@ - $(TMP); \
                $(RMV) $(TMP) $@
        @$(DBLOAD) -c
        @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
        @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi

$
SEDがある行(太字にした行)を追加しています。

FreeBSD 11 on ZFS rootの不思議

手元で利用しているZFS上にインストールしたFreeBSD 11で、ZFSのスナップショットを取ろうとしてZFSの構成を確認してみました。するとすこし不思議な状態になっていました。

/usrと/varはZFSのファイルシステムになっているのですが、マウントされていません。
$ cd /
$ df -h .
Filesystem        Size    Used   Avail Capacity  Mounted on
zz00/ROOT/default 144G    6.5G    138G     5%    /
$ cd /var
$ df -h .
Filesystem        Size    Used   Avail Capacity  Mounted on
zz00/ROOT/default 144G    6.5G    138G     5%    /
$
zfsのプロパティを見るとcanmountがoffになっていてマウントできないようになっています。
$ zfs list -t filesystem -H -o name,mountpoint,canmount
zz00              /disk/z/zz00    on
zz00/ROOT         none            on
zz00/ROOT/default /               noauto
zz00/tmp          /tmp.ORG        on
zz00/usr          /usr            off
zz00/usr/home     /usr/home       on
zz00/usr/ports    /usr/ports      on
zz00/usr/src      /usr/src        on
zz00/var          /var            off
zz00/var/audit    /var/audit      on
zz00/var/crash    /var/crash      on
zz00/var/log      /var/log        on
zz00/var/mail     /var/mail       on
zz00/var/tmp      /var/tmp        on
zz10              /disk/z/zz10    on

$
私のインストール時の間違いかと思い、他の2つのzfsを使ったFreeBSD 11を見てみましたが同じです。

検索システムで探してみると以下のページを見つけました。
Why are /usr and /var not in a boot environment?
https://forums.freebsd.org/threads/59844/
このフォーラムでも同じような質問をしている人がいます。読んでみると、
  • UFSでも同じような構成になっていて、/usrと/varは分けていない
  • /にOSのすべてが入っているのでbootが簡単になる
という答えがありました。

たしかにシングルユーザーモードで/しかない状態で、/usr/binにあるコマンド使うために/usrを改めてマウントするのはちょっと大変です。

2018年1月26日金曜日

FreeBSDでシングルユーザーモードで起動し、rootファイルシステムを変更する

FreeBSDでシングルユーザーモードで起動するには、ブートメニューから
Boot Single User
を選びます。 その後、シェルが/bin/shでよいかと訊かれるので、改行を押すとシングルユーザーモードになります。この状態ではrootファイルシステムは書き込みができないので、次のコマンドで読み書き可能に変更します。
# mount -u /
ZFS rootな場合は、
#zfs set readonly=off zroot
とする。
参考:
ZFSな FreeBSDをSingle user mode で起動したときに mount -o rw,remount / が効かない時
https://qiita.com/katsusuke/items/1b35d7dd2d1a54845379

2018年1月15日月曜日

タイバーツを日本円に交換する

先日、タイに旅行に行きました。そのとき、あまり何に考えずに日本円をタイバーツに両替し、日本に戻って来て財布を確かめてみると100バーツの紙幣が数枚残っていました。1タイバーツは3円〜4円ほどなので、日本円にすると1000円ぐらいになりそうです。

タイにはしばらくはたぶん行かないと思うので、このちょっともったいない感じのタイバーツをなんとかして日本円にしたいところです。銀行では両替できそうですが、銀行の窓口に並ぶのはイマイチに感じたので、他の手段を探していたときのことです。会社の近くにある雅叙園の中に、外貨の両替機が設置されたことを思い出しました。
「ホテル雅叙園東京」がインバウンド対応、自動外貨両替機を導入
https://inbound.mynavi.jp/news/2017/07/12/currencyexchange-gazyoentokyo/
会社からの帰りに寄ってみると、たしかに設置されています。
 端末を見てみると、タイ・バーツが選べます。
 メッセージを日本語することもできます。
「両替開始」を選んで指示に従っていくだけでタイバーツを日本円にすることができました。換算率は1タイバーツが3円でした。円をタイバーツに替えたときは3.5円かもうすこしだったので、損をした気分ですが、使えないタイバーツよりはずっとましです。会社の近くにあって助かりました。

ただし、一度、挿入してしまった外貨は手続きを取り消しても戻ってこないので、覚悟を決めて操作する必要があります。