タグ: ubuntu

Ubuntu 14.04, Ubuntu 16.04上のsnmpwalk,snmptranslateでエラーが出力される

症状

Ubuntu 14.04上からYAMAHA RTX810の情報をSNMPを通して取得するために、
zabbixでRTX-810をSNMPv2で監視する方法 – Ogalogを参考に

apt-get install snmp snmp-mibs-downloader
wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
tar xvzf yamaha-private-mib.tar.gz -C /usr/share/snmp/mibs
sed -ibak "s/mibs :/mibs all/" /etc/snmp/snmp.conf

としたのち、値が取れるか確認するために、以下のコマンドを実行したところ1

snmpwalk -v 2c -c public XXX.XXX.XXX.XXX  YAMAHA-RT-INTERFACES::yrIfPpInUcastPkts.4

以下のようなエラーが標準エラーに出力された。

Bad operator (INTEGER): At line 73 in /usr/share/mibs/ietf/SNMPv2-PDU
Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
Undefined identifier: mib-2 near line 18 of /usr/share/mibs/ietf/IPATM-IPMC-MIB
Expected "::=" (RFC5644): At line 493 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Expected "{" (EOF): At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad object identifier: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad parse of OBJECT-IDENTITY: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
.1.3.6.1.4.1.1182.2.3.9.1.11.4 = Counter32: 482448610

また、

snmptranslate .1.3.6.1.4.1.1182.2.3.9.1.11.4

としたところ、

Bad operator (INTEGER): At line 73 in /usr/share/mibs/ietf/SNMPv2-PDU
Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
Undefined identifier: mib-2 near line 18 of /usr/share/mibs/ietf/IPATM-IPMC-MIB
Expected "::=" (RFC5644): At line 493 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Expected "{" (EOF): At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad object identifier: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad parse of OBJECT-IDENTITY: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
YAMAHA-RT-INTERFACES::yrIfPpInUcastPkts.4

と同じエラーが出力された。

対応

How to fix net-snmp / snmpwalk errors [Linux consulting & more in Mantova]より、

エラーになっているMIBファイルを入れ替える(SNMPv2-PDUとIPATM-IPMC-MIBはリンク先の著者が元のファイルから変更したものを使用していることに注意)

sudo wget http://www.iana.org/assignments/ianaippmmetricsregistry-mib/ianaippmmetricsregistry-mib -O /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
sudo wget http://pastebin.com/raw.php?i=p3QyuXzZ -O /usr/share/mibs/ietf/SNMPv2-PDU
sudo wget http://pastebin.com/raw.php?i=gG7j8nyk -O /usr/share/mibs/ietf/IPATM-IPMC-MIB

その他

  • Vagrant上で動作確認(使用box: ubuntu/trusty64, ubuntu/xenial64
  • YAMAHAのprivate MIBを導入しなくても、 /etc/snmp/snmp.confのmibsオプションをallに設定するだけで同じ現象が発生する。

  1. SNMP v2cを使用。XXX.XXX.XXX.XXXはRTX810のIPアドレス。RTX810側はsnmpの利用許可設定済み(snmpv2c host)。OIDはRTX810のコマンド「show status pp 1」の「受信パケット」に対応する値 
広告

Ubuntu 14.04でSSHログイン時のメッセージをカスタマイズ

UbuntuにSSHでログインした際、

Using username "vagrant".
Authenticating with public key "imported-openssh-key" from agent
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-55-generic x86_64)

* Documentation:  https://help.ubuntu.com/

  System information as of Fri Jul 17 15:30:29 JST 2015

  System load:  0.0               Users logged in:        1
  Usage of /:   5.1% of 39.34GB   IP address for eth0:    10.0.2.15
  Memory usage: 4%                IP address for eth1:    192.168.33.10
  Swap usage:   0%                IP address for docker0: 172.17.42.1
  Processes:    118

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud


*** System restart required ***

のような文字列が表示されます。この文字列をmotd(message of the day)といい、
Ubuntu14.04ではSSHログイン時にPAMを使用している場合、/etc/pam.d/sshdの中で、pam_motdモジュールを使用して、/run/motd.dynamicファイルに書かれているものを出力しています。

/run/motd.dynamicはプログラムによって生成されており、元となるデータは/etc/update-motd.dディレクトリに数字_ファイル名というスクリプトファイルで存在しています。数字順に実行していき、標準出力された文字列を/run/motd.dynamicに出力しています。

カスタマイズ例

  1. スクリプトファイルを作成
    #!/bin/bash
    
    echo "custom message"
    
  2. /etc/update-motd.d内に設置
    /etc/update-motd.d/99-hogehoge
    
  3. 実行権限付与
    sudo chmod +x /etc/update-motd.d/99-hogehoge
    
  4. /run/motd.dynamicを更新
    sudo sh -c "run-parts --lsbsysinit /etc/update-motd.d > /run/motd.dynamic"
    
  5. SSHで新しくログイン
    Using username "vagrant".
    Authenticating with public key "imported-openssh-key" from agent
    Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-55-generic x86_64)
    
    * Documentation:  https://help.ubuntu.com/
    
      System information as of Fri Jul 17 15:49:35 JST 2015
    
      System load:  0.19              Users logged in:        1
      Usage of /:   5.3% of 39.34GB   IP address for eth0:    10.0.2.15
      Memory usage: 5%                IP address for eth1:    192.168.33.10
      Swap usage:   0%                IP address for docker0: 172.17.42.1
      Processes:    111
    
      Graph this data and manage this system at:
        https://landscape.canonical.com/
    
      Get cloud support with Ubuntu Advantage Cloud Guest:
        http://www.ubuntu.com/business/services/cloud
    
    54 packages can be updated.
    29 updates are security updates.
    
    
    *** System restart required ***
    custom message
    

          ↑ファイル名の数字部分を99にしたので、スクリプトで出力したものが一番最後に追加されている。

参考

ubuntuにphpenvからPHPをインストールした時のエラー

ubuntuをイメージベースに、phpenvを入れ、phpenvでPHP 5.6.9をインストールするDockerfileを作成。
docker buildしたのち、そのコンテナに入り、PHP 5.6.9をインストールした際、以下のようなエラーが発生した。

# phpenv install 5.6.9
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.6.9 into /root/.anyenv/envs/phpenv/versions/5.6.9
[Downloading]: http://php.net/distributions/php-5.6.9.tar.bz2
[Preparing]: /tmp/php-build/source/5.6.9
[Compiling]: /tmp/php-build/source/5.6.9
[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar
[Pyrus]: Installing executable in /root/.anyenv/envs/phpenv/versions/5.6.9/bin/pyrus
[xdebug]: Installing version 2.3.2
[xdebug]: Compiling xdebug in /tmp/php-build/source/xdebug-2.3.2

-----------------
|  BUILD ERROR  |
-----------------

Here are the last 10 lines from the log:

-----------------------------------------
  write(sp[1], &s, sizeof(s));
       ^
/tmp/php-build/source/5.6.9/sapi/fpm/fpm/zlog.c: In function 'zlog_ex':
/tmp/php-build/source/5.6.9/sapi/fpm/fpm/zlog.c:191:8: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
   write(zlog_fd > -1 ? zlog_fd : STDERR_FILENO, buf, len);
        ^
/tmp/php-build/source/5.6.9/sapi/fpm/fpm/zlog.c:195:8: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
   write(STDERR_FILENO, buf, len);
        ^
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
-----------------------------------------

The full Log is available at '/tmp/php-build.5.6.9.20150605091024.log'.
[Warn]: Aborting build.

ビルドのためにインストールしたパッケージは以下の通り。

# apt-get install -y re2c bison libxml2-dev libcurl4-openssl-dev libjpeg8-dev libpng12-dev libmcrypt-dev libreadline-dev libtidy-dev libxslt1-dev

そこで、ubuntuにphp-buildでphp5.5を入れるためにシェルスクリプトと格闘した記録 | hirobanex.netより、autoconfをインストール

# apt-get install -y autoconf

もう一度インストールしなおす

# phpenv install 5.6.9
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.6.9 into /root/.anyenv/envs/phpenv/versions/5.6.9
[Skipping]: Already downloaded and extracted http://php.net/distributions/php-5.6.9.tar.bz2
[Preparing]: /tmp/php-build/source/5.6.9
[Compiling]: /tmp/php-build/source/5.6.9
[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar
[Pyrus]: Installing executable in /root/.anyenv/envs/phpenv/versions/5.6.9/bin/pyrus
[xdebug]: Installing version 2.3.2
[xdebug]: Compiling xdebug in /tmp/php-build/source/xdebug-2.3.2
[xdebug]: Installing xdebug configuration in /root/.anyenv/envs/phpenv/versions/5.6.9/etc/conf.d/xdebug.ini
[xdebug]: Cleaning up.
[Info]: Enabling Opcache...
[Info]: Done
[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.5.6.9.20150605093249.log
[Success]: Built 5.6.9 successfully.

作成したDockerfile

ubuntuでnpm install dreddとした際に「/usr/bin/env: node: No such file or directory」エラー

ubuntu上で、npm installした際、

/usr/bin/env: node: No such file or directory
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

というエラーが発生

node.js – Can not install packages using node package manager in Ubuntu – Stack Overflowより

sudo apt-get install nodejs-legacy

ののち、再度 npm installすることで解決

nodejsのコマンド名がubuntuではnodejs、そのほかの環境でnodeとなっている仕様のため

それ以外の解決方法として、

  • nodeという名前でnodejsのシンボリックリンクを作成
  • nvm (Node Version Manager)などを用いてパッケージ管理とは別にインストール

Ubuntu 14.04でmysql-apt-configインストール中に先に進まない

Ubuntu14.04であるソフトをインストール中、依存パッケージとしてmysql-apt-configがインストールされることにより、現れる設定画面において、何を選択してもその先に進まない状況がありました。
削除しようとしても、「dpkg –configure -a」の実行を求められ、実行すると同じ画面で先に進まなくなります。

対策として、Could not select ‘OK’ in mysql-apt-config [Ubuntu 14.04] – Stack Overflowにあるように

/var/lib/dpkg/info/mysql-apt-config.postinst

をルート権限でエディタで開く。(sudo viとかsudo geditとかsudo mousepadなど)
2行目の空行に

exit

と入力して保存。

次に、

sudo dpkg --configure mysql-apt-config

で設定処理を再開させるが、先ほどのexitのおかげで即終了します。

最後に

sudo apt-get remove mysql-apt-config

でアンインストールします。

QuickTiGame2dをUbuntu 11.10で使う

QuickTiGame2dはTitaniumで使える2Dゲームモジュール

WindowsだとWikiにしたがってインストールすれば、そのままサンプルがビルド&実行できる。

Ubuntu 11.10で同じようにすると、ビルドは成功するが、

実行は「Uncaught Error: Requested module not found: com.googlecode.quicktigame2d」とエラーがでる。

原因と解決法は

android – Titanium Mobile : Requested module not found – Stack Overflow

にあるように、Linuxでは大文字小文字が区別されるため、「QuickTiGame2dModuleAndroid.jarを」全て小文字にリネームする。

buildディレクトリを削除して、再度ビルド・実行すると、動く。

ubuntuに自己認証局の証明書を登録

参考

手順

自己認証局の証明書 myCA.crt ファイルが手元にあったとして

  1. 証明書を所定の位置に設置
    $sudo cp myCA.crt /usr/share/ca-certificates/
  2. 証明書リストに追記
    $sudo vi /etc/ca-certificates.conf
    末尾に
    myCA.crt
    を追加(/usr/share/ca-certificates からの相対パス)
  3. 更新
    $sudo update-ca-certificates

update-ca-certificatesを行うことで、/etc/ssl/certs/ca-certificates.crtが更新され、
gitなどのツールでその証明書が利用できるようになる