68user's page 掲示板

Prev< No. 3616〜3624> Next  [最新発言に戻る] [過去ログ一覧]
No. 3616 # 68user 2004/03/11 (木) 01:40:33
>>3615 バンガード
> やっぱり、expectを導入するしかないのだろうかと考え始めています。
もし AIX の passwd が、どうしても端末からしか読んでくれないなら、
expect などに頼るか、PAM を使ったパスワード変更プログラムを
書くことになるかと思います。

No. 3617 # ビギナー 2004/03/11 (木) 17:28:30
LinuxASからsolaris9に乗せ替えるのですが、
クーロンはどのように移行できるのでしょうか?
まだ実機が来ていなくて何も環境が見えません。
これまでの設定ファイルやスクリプトファイルが
そのまま使えるのか、シェルの変更をしないと使えないのか、
どこに配置するのか・・・少しでも事前に解っていれば助かるかな〜って思ってます。

No. 3618 # 68user 2004/03/11 (木) 18:24:25
>>3617 ビギナー
あらーそれは大変ですね。基本的に機能面 (コマンドの数とかオプションの
種類とか) で言うと Linux > Solaris なので (正確には GNU モノ > Solaris)、
Linux から Solaris への移行は結構面倒です。

まずは Sun が提供している
    「Linux から Solaris オペレーティング環境への移行」
            http://sdc.sun.co.jp/solaris/migration/linux/index.html
をどうぞ (ドキュメントを読むにはユーザ登録が必要だと思われます)。

上記ドキュメントには、当然ながら Sun に都合が悪いことはあまり書かれて
いませんので (互換性ないですよ、とはあまり書かれていない)、以下わたしの
印象を書きます。

全体的に言えることは、
      - Linux (というより GNU) 独自の機能を使っていたら移行に苦労する
      - 古来からの UNIX の機能しか使っていないならあまり苦労しないかも
ということです。GNU モノの一覧はこちらを。
      http://www.linux.or.jp/JM/INDEX/gnu.html
特に Solaris の find・date・grep・tar・make・awk・sed コマンドの機能は、
Linux のそれと比べると貧弱な印象があります。

まぁ Solaris でも GNU モノをインストールすることはできるので、
がんばってプログラムを直すか、Solaris に GNU モノを入れるかという
選択肢はありますけどね。

なお、apache や perl など、Linux にも Solaris にも属さないもの
(第三者が開発しているもの) は、基本的に同じ動きをします。


> クーロンはどのように移行できるのでしょうか?
基本機能は同じですが、例えば
      http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html
の name=value という書き方は Solaris ではできません。
0-23/2 というのもダメなはず。

上記 man には
      ATT や BSD の cron では "1-3,7-9" は拒否されるだろう --
      "1-3" または "7,8,9" のいずれかだけしか指定できない。
とありますが、Solaris ではどうだったかなぁ。

Solaris の crontab(1) はこちら。
    http://www.freebsd.org/cgi/man.cgi?query=crontab&apropos=0&sektion=0&manpath=SunOS+5.9&format=html

> 設定ファイル
OS の設定ファイル名や内容は、同じものは同じですが、違うものは
違います (としか言いようがない)。

同じもの:
      /etc/hosts, /etc/resolv.conf, /etc/nsswitch.conf

違うもの:
      その他たくさん。Linux の /etc/fstab は、Solaris では /etc/vfstab など。

> スクリプトファイル
Linux では sh は bash ですが、Solaris は古来からの sh です。例えば
Solaris の sh では
    export A=B
はダメで、
    A=B
    export A
としなくてはいけません。このような bash 依存な書き方をしていなければ
少しの修正でいけるかもしれませんが、bash の便利な機能を活用しまくって
いるなら苦労するでしょう。

No. 3619 # ビギナー 2004/03/12 (金) 11:49:16
>>3618 68user
参考にさせていただきます。
実機の搬入が来週なので、結果報告はその時にします。

No. 3620 # バンガード [URL] [E-mail] 2004/03/12 (金) 19:13:45
>>3616 68user
現在expectで対応する方向で準備中です。
ありがとうございました。

No. 3621 # バンガード [URL] [E-mail] 2004/03/12 (金) 19:17:53
度々申し訳ございません。
今度はkshで教えてください。

======= test_file ========
aix4-r1
aix4-r2
aix4-r3
aix4-r4
aix3-r1
aix3-r2
aix3-r3
aix3-r4
aix2-r1
aix2-r2
aix2-r3
aix2-r4
======= test.ksh ========
#!/usr/bin/ksh

file="test_file"

nawk '{
                if ( (substr($0,1,4) == "aix4") )\
                {\
                                printf "TRUE:%s\n",$0; \
                }\
                else {\
                                printf "FALSE:%s\n",$0; \
                }\
}' $file

上記の様に文字列の先頭数文字のみを見て一致するかの判定を行いたいのですが、ksh単体での実現方法が分からず苦労しています。
やはり、上に示したようにawkを使用して、その中でsubstr関数を使用するしかないでしょうか?

本当に基本的なことで申し訳ございませんが、よろしくお願い致します。

No. 3622 # 68user 2004/03/12 (金) 22:12:33
>>3621 バンガード
こんな感じですかね。

while read line; do
        prefix=${line%-r[0-9]}
        if [ "$prefix" = "aix4" ]; then
                echo "TRUE:$line"
        else
                echo "FALSE:$line"
        fi
done < test_file

No. 3623 # バンガード [URL] [E-mail] 2004/03/15 (月) 09:51:21
>>3622 68user
> prefix=${line%-r[0-9]}
> if [ "$prefix" = "aix4" ]; then
これだと、私が例で示させていただいたパターンにしか対応できませんよね。(そういう意味では私の示した例が悪かったですね)
これを「aix4-r23,aix-r4x3」なども「一致」と見るような方法は無いでしょうか?
たとえば、以下のようなif文は無理でしょうか?
if [ $line = "aix4"* ]; then

No. 3624 # 68user 2004/03/15 (月) 10:41:45
>>3623 バンガード
> 「aix4-r23,aix-r4x3」なども「一致」と見るような方法は無いでしょうか?
> if [ $line = "aix4"* ]; then
aix4* では aix-r4x3 はマッチしないように見えますが、
またしても不適切な例ではありませんか?

> if [ $line = "aix4"* ]; then
if ではできませんが、case ならできます。

while read line; do
    case $line in
        aix4*)
            echo aix4
        ;;
        aix5*)
            echo aix5
        ;;
        *)
            echo others
        ;;
    esac
done < test_file

Prev< No. 3616〜3624> Next  [最新発言に戻る] [過去ログ一覧]