【WordPress】WordPressテーマ変更

WordPressを入れ直したので、外観-テーマをTwenty Seventeenに変更しました。
それに伴い、デザインをカスタマイズしています。

  • アーカイブを変更
    トップページが全文表示から抜粋表示に変更となります。
    archive.php

    get_template_part( 'template-parts/post/content', get_post_format() );
    ↓
    get_template_part( 'template-parts/post/content', 'excerpt' );
    
  • 「投稿」文字を削除
    記事の上にある「投稿」の文字を削除します。
    index.php

    以下を削除
    <header class="page-header">
      <h2 class="page-title"><?php _e( 'Posts', 'twentyseventeen' ); ?></h2>
    </header>
    
  • 「カテゴリ」文字を削除
    記事の上にある「カテゴリ」の文字を削除します。
    archive.php

    以下を削除
    <?php if ( have_posts() ) : ?>
      <header class="page-header">
        <?php
          the_archive_title( '<h1 class="page-title">', '</h1>' );
          the_archive_description( '<div class="taxonomy-description">', '</div>' );
         ?>
      </header><!-- .page-header -->
    <?php endif; ?>
    
  • パンくずリストの追加(未実施)
    fanction.php

    以下を一番下に追加
    function breadcrumb(){
      global $post;$str ='';
      if(!is_home()&&!is_admin()){
        $str.= '<div id="breadcrumb" class="cf"><div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;">';
        $str.= '<a href="'. home_url() .'" itemprop="url"><span itemprop="title">ホーム</span></a> &gt;&#160;</div>';
        if(is_category()) {
          $cat = get_queried_object();
          if($cat -> parent != 0){
            $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor) .'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor) .'</span></a> &gt;&#160;</div>';
              }
            }
           $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        }elseif(is_page()){
          if($post -> post_parent != 0 ){
            $ancestors = array_reverse(get_post_ancestors( $post->ID ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_permalink($ancestor).'" itemprop="url"><span itemprop="title">'. get_the_title($ancestor) .'</span></a> &gt;&#160;</div>';
            }
          }
        }elseif(is_single()){
          $categories = get_the_category($post->ID);
          $cat = $categories[0];
          if($cat -> parent != 0){
            $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
            foreach($ancestors as $ancestor){
              $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor).'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor). '</span></a>→</div>';
            }
          }
          $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        }else{
          $str.='<div>'. wp_title('', false) .'</div>';
        }
        $str.='</div>';
      }
      echo $str;
    }
    
    以下をパンくずリストを表示したいphp(page.phpやsingle.phpなど)に追加
    <?php breadcrumb(); ?>
    

【VPNサーバ】OpenVPN導入その6

約1年ずっと起動していたRaspberry Piもとうとう再起動しました。
それに伴い、iPhoneからRaspberry PiのOpenVPNを介して、
自宅サーバに接続しようと思ったところ、接続できなかったので設定を見直し。

  • iptablesの設定

    iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 192.168.XXX.XXX
    

    「–to」にはRaspberry Piの通常のIPを指定します。
    再起動すると設定が消えるため、自動設定できるようにするのが良いですが、
    まだ自動化できていません。

設定後、ufw(iptable)の再起動は不要です。
この内容は「【Raspbian】OpenVPN導入その2」の最後の方にも記載がありますが、
見逃しがちなので、再度記載しました。

【VPNサーバ】OpenVPN導入その5

ASUSのタブレットを購入したので、こちらにもOpenVPNを導入します。

  • OpenVPN設定(クライアント用の証明書と鍵作成(追加))
    RaspberryPiでタブレット用の証明書と鍵を作成します。

    cd /etc/openvpn/easy-rsa
    source ./vars
    ./build-key クライアント名(タブレット)
    

    作成した証明書や鍵のうち、
    クライアントで利用する下記ファイルをWindowsにUSB等で持ってきて、設定を行います。

    ca.crt
    クライアント名(タブレット).crt
    クライアント(タブレット).key
    ta.key(iPhone優先のため、利用していませんが、一応)
    
  • クライアント設定ファイル(タブレット用)
    クライアント設定ファイルとして「クライアント名(タブレット).ovpn」ファイルを作成します。
    設定内容は「OpenVPN導入その3」の設定値と全く一緒です。
  • はまったこと
    タブレットにOpenVPNをインストールするとデスクトップに「OpenVPN GUI」の
    ショートカットが作成されるので、ダブルクリックして実行し、接続します。
    単純に実行するとOpenVPNには接続し、IPが割り振られますが、
    OpenVPN内の他のクライアントに接続できませんでした。
    pingももちろん飛びません。

    ipv6が悪さをしているのかと色々勘ぐりましたが、
    ちゃんとクライアント側のログを見てみると下記エラーが出力されていました。

    ROUTE: route addition failed using CreateIpForwardEntry: アクセスが拒否されました。[status=5 if_index=12]
    Route addition via IPAPI failed [adaptive]
    Route addition fallback to route.exe
    env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
    ERROR: Windows route add command failed [adaptive]: returned error code 1
    

    Cドライブ内のexeファイルを実行できていないようです。
    これを解決するには「OpenVPN GUI」のショートカットを
    常に管理者権限で実行する必要があります。

    「OpenVPN GUI」のショートカットを右クリックからプロパティを開き、
    「互換性」タブの「管理者としてこのプログラムを実行する」のチェックボックスをチェックします。
    これで無事、OpenVPN内のクライアントにも接続できました。

【VPNサーバ】OpenVPN導入その4

Windowsを利用してOpenVPNの動作確認ができたので、
元々やりたかったiPhoneで外からRaspberry Piに繋げます。

OpenVPNクライアントを追加するため、まずはサーバー側で証明書、鍵を作成します。

  • OpenVPN設定(クライアント用の証明書と鍵作成(追加))
    1度Windows用に証明書と鍵作成を行っているため、手順が短くて済みます。

    cd /etc/openvpn/easy-rsa
    source ./vars
    ./build-key クライアント名(追加)
    

    varsファイルを読み込むと「you run ./clean-all」が表示されますが、
    これは以前に1度実行しているため、実行不要です。
    実行すると「/etc/openvpn/easy-rsa/keys」内が初期化され、
    再度、認証局から作り直しとなります。(やりました)

    iPhoneでOpenVPNを利用する場合もWindowsと同様で、
    「OpenVPN導入その1」で作成した証明書や鍵のうち、
    クライアントで利用するものをWindowsにUSB等で持ってきて、設定を行います。

  • クライアント設定ファイル(iPhone用)
    iPhone用のクライアント設定ファイルとして「クライアント名(追加).ovpn」ファイルを作成します。

    下記内容を追加
    # tunデバイス、udpプロトコル、OpenVPNサーバの1194番ポートをクライアントとして利用
    dev tun
    proto udp
    remote z-area.net 1194
    client
    
    # 名前解決試みのリトライ数(無限)
    resolv-retry infinite
    
    # ローカルポートをバインドしない
    nobind
    
    # 再接続時に鍵読み込み、tunデバイスオープン
    persist-key
    persist-tun
    
    # OpenVPNのログ設定
    verb 3
    
    # LZO圧縮を利用
    comp-lzo
    
    # 認証局証明書、クライアント(追加)証明書、クライアント(追加)秘密鍵の内容貼り付け
    <ca>
    -----BEGIN CERTIFICATE-----
    ca.crtの内容を貼り付け
    -----END CERTIFICATE-----
    </ca>
    <cert>
    -----BEGIN CERTIFICATE-----
    クライアント名(追加).crtの内容を貼り付け
    -----END CERTIFICATE-----
    </cert>
    <key>
    -----BEGIN PRIVATE KEY-----
    クライアント名(追加).keyの内容を貼り付け
    -----END PRIVATE KEY-----
    </key>
    
  • iPhoneへ証明書と鍵の移動
    Apple StoreからVPNクライアントのアプリとして「OpenVPN」をダウンロードします。
    次にiTunesからダウンロードした「OpenVPN」を選択して、
    「クライアント名(追加).ovpn」を移動します。

    次にiPhoneの操作に戻ると、「+」マークが出ているので、
    設定ファイルを読み込み、OpenVPNに接続します。
    「Connected」になれば成功です。
    左上に「4G VPN」と表示されるはずです。

    はまりやすい注意点は自宅で作業をしている場合、
    ルーターのWifiには接続しないように4G回線や別回線でやること。

  • iPhoneから自宅のLinuxへ接続
    OpenVPNアプリで「4G VPN」接続状態になったら
    SSH接続アプリで自宅のLinuxに接続確認を行います。

    私は「vSSH Lite」を利用しました。
    有名なのは「Prompt」ですが、無印は公開中止になり、
    「Prompt2」のみになってしまったようなので、「vSSH Lite」を利用してみました。

    接続するLinuxはSSHで接続する際、秘密鍵が必要になるので、
    iTunesから「vSSH Lite」を選択して秘密鍵を移動します。

    2つのLinuxに外から接続確認してみました。
    【Raspberry Pi】
    IPは10.8.0.1でOpenVPNサーバーの仮想IPを指定してみました。

    【VMWare上のCentOS】
    IPは192.168.XXX.XXXで自宅LAN内のIPを指定してみました。

    どちらも無事接続成功です。

【VPNサーバ】OpenVPN導入その3

OpenVPNクライアントをWindowsにインストールしてみました。

利用したファイルは「openvpn-install-2.3.4-I605-x86_64.exe」で、
インストール時に右クリックし「管理者として実行」で、画面に従いインストールしました。

「OpenVPN導入その1」で作成した証明書や鍵のうち、
クライアントで利用するものをWindowsにUSB等で持ってきて、
「OpenVPNインストールフォルダ/OpenVPN/config」に配置します。

  • クライアント設定ファイル
    OpenVPNクライアント側の設定を行います。

    先ほど配置したconfigフォルダに「クライアント名.ovpn」を作成します。

    下記内容を追加
    # tunデバイス、udpプロトコル、OpenVPNサーバの1194番ポートをクライアントとして利用
    dev tun
    proto udp
    remote z-area.net 1194
    client
    
    # 認証局証明書、クライアント証明書、クライアント秘密鍵のパス設定
    ca ca.crt
    cert クライアント名.crt
    key クライアント名.key
    
    # 名前解決試みのリトライ数(無限)
    resolv-retry infinite
    
    # ローカルポートをバインドしない
    nobind
    
    # 再接続時に鍵読み込み、tunデバイスオープン
    persist-key
    persist-tun
    
    # OpenVPNのログ設定
    verb 3
    
    # LZO圧縮を利用
    comp-lzo
    
    # 共有鍵の利用
    #tls-auth ta.key 1
    

「OpenVPN GUI」を起動し、接続が成功すれば
サーバーの設定、クライアントの設定とも完了です。
接続完了後、コマンドプロンプトから「ipconfig /all」を打つと
「ローカルエリア接続2」という接続情報が増えており、
「10.8.0.X」とIPが振られていることが確認できます。

【VPNサーバ】OpenVPN導入その2

鍵の作成が終わったので、次に設定ファイルを作成、修正していきます。

  • パケット転送設定
    下記2ファイルを修正します。

    vi /etc/sysctl.conf
    
    下記コメントアウトを外す。
    #net.ipv4.ip_forward=1
    ↓
    net.ipv4.ip_forward=1
    

    viじゃなぜか編集できなかったので、リダイレクトで設定変更。

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  • サーバー設定ファイル

    vi /etc/openvpn/server.conf
    
    下記内容を追加
    # tunデバイス、udpプロトコル、1194番ポートを利用
    dev tun
    proto udp
    port 1194
    
    # 認証局証明書、サーバー証明書、サーバー秘密鍵、鍵交換用のパス設定
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/サーバー名.crt
    key /etc/openvpn/サーバー名.key
    dh /etc/openvpn/dh1024.pem
    
    # OpenVPNの実行権限(OpenVPNインストール時に作成されるユーザとグループ)
    user nobody
    group nogroup
    
    # OpenVPNの仮想ネットワークと仮想サブネットマスク
    server 10.8.0.0 255.255.255.0
    
    # 起動時に鍵読み込み、tunデバイスオープン
    persist-key
    persist-tun
    
    # OpenVPNのログ設定
    status /var/log/openvpn-status.log
    log-append /var/log/openvpn
    verb 3
    
    # OpenVPNクライアント間の接続許可
    client-to-client
    
    # OpenVPNクライアント側の全てのトラフィックをOpenVPNサーバー経由(デフォルトゲートウェイ:10.8.0.2)
    # 「route -n」で確認可能
    push "redirect-gateway def1"
    
    # DHCP設定(DHCP利用しないため、詳細不明)
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    
    # LZO圧縮を利用
    comp-lzo
    
    # OpenVPNクライアントのIP固定設定を利用
    client-config-dir ccd
    
    # 共有鍵の利用
    #tls-auth ta.key 0
    

    下記サイトを参考にしました。
    英語サイトですが、コマンドは一緒なので雰囲気で。
    http://raspberrypihelp.net/tutorials/1-openvpn-server-tutorial

  • サーバー設定ファイル(注意点1)
    pushを「”」で括っていますが、色々な参考サイトを見ていると、
    「”」(全角のダブルクォーテーション)になっているサイトがありますが、
    正しくは「”」(半角のダブルクォーテーション)です。

    クライアントはWindowsとiPhoneでそれぞれ試したところ、
    WindowsはどちらでもOpenVPNに接続成功しますが、
    iPhoneでは「”」(半角のダブルクォーテーション)でないとエラーになりました。

    全く同事象でエラーとなっていた人がいました。
    https://forums.openvpn.net/topic12789.html

  • サーバー設定ファイル(注意点2)
    「tls-auth ta.key 0」はコメントアウトしています。
    前回も記載していますが、有効になっているとiPhoneからの接続が出来なかったためです。
  • クライアントの仮想IP固定設定
    VPNクライアントの仮想IPは固定が推奨らしいので、設定を行います。

    mkdir /etc/openvpn/ccd
    vi /etc/openvpn/ccd/クライアント名
    
    下記内容を追加
    ifconfig-push 10.8.0.X 10.8.0.X+1
    

    Xは決まった数値がありますが、他のサイトを参考にしてください。

  • OpenVPN起動

    /etc/init.d/openvpn start
    

    エラーが発生する場合、下記のログを確認します。

    view /var/log/openvpn
    

    私のRaspberry Piでは下記の内容が出力されていました。

    Note: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)
    

    下記サイトを確認するとrebootが有効とのことで、
    再起動後にコマンドを実行してみたところ、無事起動しました。

    http://blog.paulregan.co.uk/2013/02/raspberry-pi-openvpn.html

  • ファイアウォール設定
    ファイルウォールの設定を行います。
    私のRaspberry Piはiptablesのラッパー的な役割をするufwを導入しているため、
    iptablesだけではなく、ufwの設定も行います。

    • iptablesの設定

      iptables -t filter -A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT
      iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 192.168.XXX.XXX
      

      「–to」にはRaspberry Piの通常のIPを指定します。
      再起動すると設定が消えるため、自動設定できるようにするのが良いです。
      (ここでは記載省略)

    • ufwの設定

      ufw allow 1194
      vi /etc/ufw/before.rules
      
      下記内容を「# End required lines」と「# allow all on loopback」の間に追加
      # OpenVPN Configuration
      -A ufw-before-input -i tun+ -j ACCEPT
      -A ufw-before-output -i tun+ -j ACCEPT
      -A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
      -A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
      
      ufw disable
      ufw enable
      

【VPNサーバ】OpenVPN導入その1

外から自宅サーバをいじってみたくなったので、OpenVPNを導入します。
Raspberry Piで動いてるサービスをNUCに移行したら
Raspberry PiはOpenVPNサーバ専用かもしれません。

  • OpenVPN導入
    まずはパッケージを最新化します。
    しばらくやってなかったので、結構長かったです。

    aptitude update
    aptitude upgrade
    

    OpenVPNをインストールします。
    相変わらずインストールはコマンドで一瞬。

    aptitude install openvpn openssl
    

    opensslは以前にApache2にSSLを導入した際に
    最初から入ってたような気がしたのですが、入れちゃいました。

  • OpenVPN設定(準備)
    Apache2のSSLではサーバー側で公開鍵、秘密鍵を利用していましたが、
    OepnVPNを利用するにはサーバー側、クライアント側の両方で公開鍵、秘密鍵を利用します。

    Apache2の時と同様に鍵の正当性を証明するために、OpenVPN用のオレオレ認証局を作成します。
    OpenVPNをインストールするとOpenSSLを簡単に利用できるツール「easy-rsa」が
    同時にインストールされるのでそれを利用します。
    OpenVPNのディレクトリにツール「easy-rsa」をコピーしておきます。

    現在では「easy-rsa」は3.0まで公開されていて、
    それを利用すると以降に記述した2.0の手順よりさらに短く簡単に設定できるようです。
    今回は2.0の手順になります。

    cd /etc/openvpn
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
    

    認証局作成、サーバー用の証明書と鍵作成、クライアント用の証明書と鍵作成で
    参照する変数用のファイル作成もしておきます。
    作成しておくと入力の手間が省けます。

    vi /etc/openvpn/easy-rsa/vars
    
    下記内容を変更
    export EASY_RSA="`pwd`"
    ↓
    export EASY_RSA="/etc/openvpn/easy-rsa"
    
    export KEY_COUNTRY="US"
    ↓
    export KEY_COUNTRY="JP"
    
    export KEY_PROVINCE="CA"
    ↓
    export KEY_PROVINCE="TOKYO"
    
    export KEY_CITY="SanFrancisco"
    ↓
    export KEY_CITY="Akihabara"
    
    export KEY_ORG="Fort-Funston"
    ↓
    export KEY_ORG="OreOreCA"
    
    export KEY_EMAIL="me@myhost.mydomain"
    ↓
    export KEY_EMAIL=""
    
    export KEY_CN=changemeからexport PKCS11_PIN=1234はコメントアウト
    
  • OpenVPN設定(認証局作成)
    認証局を作成する際に「openssl.cnf」を参照するため、
    サンプルファイルの「openssl-1.0.0.cnf」を「openssl.cnf」としてコピーしておきます。

    cd /etc/openvpn/easy-rsa
    cp -pi openssl-1.0.0.cnf openssl.cnf
    

    さらに先ほど事前作成しておいたvarファイルを環境変数として有効化しておきます。

    source ./vars
    
    NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
    

    初期化してから実行しろということなので、初期化後にオレオレ認証局を作成します。

    ./clean-all
    ./build-ca オレオレ認証局名(適当)
    
    Generating a 1024 bit RSA private key
    ...............++++++
    ....++++++
    writing new private key to 'ca.key'
    -----
    略
    

    括弧内にvarsファイルで予め設定しておいた設定内容が表示されるので、
    問題なければそのままEnter押下して作業を進めます。

  • OpenVPN設定(DHパラメータ作成)
    DHパラメータはサーバーとクライアントで鍵を交換するために利用するそうです。

    ./build-dh
    
  • OpenVPN設定(サーバー用の証明書と鍵作成)

    ./build-key-server サーバー名
    

    途中でチャレンジパスワード、会社名付属、署名にサインされるか聞かれますが、
    チャレンジパスワード、会社名付属はブランクでEnter、署名はyで入力します。
    最後のコミットもyで入力します。

  • OpenVPN設定(クライアント用の証明書と鍵作成)

    ./build-key クライアント名
    

    実行するファイル名がサーバーと似ていますが微妙に違うので注意。

  • OpenVPN設定(共有鍵作成)
    セキュリティ強化の一環として、共有鍵をさらに作成可能です。
    この鍵はツール「easy-rsa」ではなく、openvpnコマンドを利用して作成します。

    openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key
    

    私の環境では、iphoneから利用する場合、ta.keyがあると
    OpenVPNに接続できなかったので、利用しませんでした。

作業完了すると「/etc/openvpn/easy-rsa/keys」に下記ファイルが作成されています。
他にも作業ファイルが作成されていますが、記載していません。

ファイル名概要権限備考
ca.crtオレオレ認証局の証明書644サーバー、クライアントで利用
ca.keyオレオレ認証局の秘密鍵--
サーバー名.crtサーバーの証明書644サーバーで利用
サーバー名.csrサーバーの公開鍵--
サーバー.keyサーバーの秘密鍵600サーバーで利用
クライアント名.crtクライアントの証明書-クライアントで利用
クライアント名.csrクライアントの公開鍵--
クライアント.keyクライアントの秘密鍵-クライアントで利用
dh1024.pem鍵交換用644サーバーで利用
ta.key共有鍵--

サーバーで利用する4ファイルはディレクトリ移動しておきます。
実行権限も表の通りではない場合は修正しておきます。

cd /etc/openvpn
cp -pi /etc/openvpn/easy-rsa/keys/ca.crt .
cp -pi /etc/openvpn/easy-rsa/keys/サーバー名.crt .
cp -pi /etc/openvpn/easy-rsa/keys/サーバー.key .
cp -pi /etc/openvpn/easy-rsa/keys/dh1024.pem .

クライアントで利用する3ファイルはUSBメモリ等でクライアントに移動しておきます。
keysディレクトリ内のファイルは削除しても問題ないようですが、
クライアントを追加したい場合、ca.crtやca.keyを参照したりするので、一旦削除しないでおきます。

SJISとUTF-8を一緒にgrep

JavaファイルだとSJIS、propertiesだとSJISまたはUTF-8の
どちらでも定義されている”氏名”という単語を
ファイル名と行数を出力しながらgrepしたい。

検索してみると下記のような方法が多かったです。

grep -rn `echo "氏名" | nkf -s` *.java *.properties | nkf -w

上記方法だと、入力値の”氏名”をSJISに変換してからgrepしているため、
SJISで書かれているJavaファイルしかgrepできないんじゃ?と思い、
for文を利用してみることに。
(そもそも上記方法だとなぜかgrepすら出来ず。なぜだろう。。)

for X in `find ( -name "*.java" -or -name "*.properties" )`; do nkf -w $X | grep -rn "氏名" | while read line; do echo "$X:$line"; done done
./Sample.java:15: //氏名を変換
./test_utf8.properties:1:#氏名を定義
./test_sjis.properties:1:#氏名を定義

これでファイル名と行数とそれに対するgrep結果が得られました。
findでHITしたファイルを一時変数に格納し、「nkf -w」で全てUTF-8に変換してからgrepしてます。
次にgrep結果をwhileで繰り返しながら一時変数(ファイル)とgrep結果を出力。

もうシェル作って引数取ればいいじゃないと思いますが、1行でやりたかったんです。

【Raspbian】ShellShock対策

bashに脆弱性が発見されたらしく、Rapspberry Piも対策してみました。

x='() { :;}; echo vulnerable' bash -c 'echo this is a test'

上記コマンド実行した際に「vulnerable」がコンソールに出ると要対策。

vulnerable
this is a test

というわけで最新版にアップデートします。

apt-get update
apt-get --only-upgrade install bash

再度コマンド実行して対策できたか確認します。

x='() { :;}; echo vulnerable' bash -c 'echo this is a test'
this is a test

「vulnerable」が表示されていなければ問題なし。
アップデートしただけで対策完了。

【Raspbian】DiCE導入

IPアドレスは固定にしていなので、
DynamicDNSサービスを利用していたのですか、
ずっと更新していなかったら怒られました。
そこでDiCEを導入することに。
Windows版を導入しました。

http://www.hi-ho.ne.jp/yoshihiro_e/dice/

上記URLにアクセスし、「DiCE for Windows Version 1.59」の「Download MSI Package」をダウンロードします。
インストールディレクトリを選択し、画面に従いインストールを行います。

インストール後に起動したら、下記設定を行う。

「イベント」-「追加」ボタン押下。
説明:自宅サーバ
イベントタイプ:DNS更新
一般タブ-サービス:MyDNS.JP
一般タブ-ホスト名:z-area-.net
一般タブ-ドメイン名:mydns.jp
一般タブ-ユーザ名:MyDNS.JPのログインユーザID
一般タブ-パスワード:MyDNS.JPのログインパスワード
一般タブ-IPアドレス:空欄
スケジュール-頻度:IPアドレス変化時
スケジュール-変化がない時:21日毎
イベント有効にチェック
それ以外は変更せずデフォルト設定としました。

「イベント」-「今すぐ実行」を選択するとIPアドレスが通知される。
MyDNS.JPにログインしLOG INFOを確認すると、IPアドレスの更新を確認できる。