シェルスクリプトのexpectで応答メッセージを振り分ける方法

February 13,2024 11:55 PM
Category:[bash]
Tag:[bash, expect]
Permalink

シェルスクリプトのexpectで確認メッセージを振り分ける方法を紹介します。

1.問題点

シェルスクリプトを使ってパスワード入力が必要なコマンド(scp)を実行するためにexpectを使っています(下記)。

#!/bin/bash
 
expect -c "
spawn scp /home/foo/abc.txt foo@172.16.5.10:/home/foo
expect \"Are you sure you want to continue connecting (yes/no)?\"
send \"yes\n\"
expect \"password:\"
send \"hoge\n\"
interact
"

ですが、確認メッセージが2パターンあり、それらを振り分ける方法がわかりません。

具体的には、

% scp /home/foo/abc.txt foo@172.16.5.10:/home/foo

というコマンドを実行すると、初回は、

Are you sure you want to continue connecting (yes/no)?

と聞かれて、そのあと

password:

を聞かれるのですが、2回目以降は、

password:

しか聞かれません。

ということで、シェルスクリプトのexpectで確認メッセージを振り分ける方法を紹介します。

2.シェルスクリプトのexpectで確認メッセージを振り分ける

確認メッセージを振り分けるには、次のように書き換えます。

#!/bin/bash
 
expect -c "
spawn scp /home/foo/abc.txt foo@172.16.5.10:/home/foo
expect {
  \"Are you sure you want to continue connecting (yes/no)?\" {
    send \"yes\n\"
    expect \"password:\"
    send \"hoge\n\"
  } \"password:\" {
    send \"hoge\n\"
  }
}
interact
"

具体的には、expect節で全体を括り、その中にifのthen節とelse節のように確認メッセージを分けて記述します。

Comments [0] | Trackbacks [0]

Adobe Acrobat Reader(Adobe Reader)で電子印鑑を押印する方法

January 30,2024 11:55 PM
Category:[Acrobat]
Tag:[Acrobat, Adobr]
Permalink

Adobe Acrobat Reader(Adobe Reader)で電子印鑑を押印する方法を紹介します。

1.電子印鑑の用意

電子印鑑は有料・無料など色々なサイトで作ることができます。

ここでは、画像の印鑑データを透過したり、テキスト打ち込みで印鑑が作れる「印鑑透過」で作ったものを利用します。

STORES」というサイトでも無料ダウンロードできるようです。

2.PDFに電子印鑑を押印する

印鑑を押印したいPDFファイルを開き、「すべてのツール」タブの「入力と署名」または「電子サイン」をクリック。

「イニシャルを追加」をクリック。

「画像」をクリック。

電子印鑑にしたい画像を選択すると枠内に表示されるので「適用」をクリック(ここでサイズ等の調整はできません)。

なお、この印鑑を毎回使いたい場合は画面左下の「イニシャルを保存」をチェックしておくと便利です。ここではチェックした状態で進めます。

「適用」をクリックすると、PDFに適用した電子印鑑が表示され、マウスで移動できる状態になります。

位置を決めてクリックすると印鑑が固定されます。

印鑑に編集ボックスが表示されます。「A」は印鑑の拡大・縮小、ゴミ箱は印鑑の削除です。

その右の「…」は印鑑ではないイニシャル等におきかえるものです。

これでPDFを保存すれば、電子印鑑が捺印された状態になります。

次回以降は「電子サイン」に選択した印鑑が表示されるので、印鑑をクリックするだけでPDFに表示されます。×印をクリックすれば登録を解除できます。

Comments [0] | Trackbacks [0]

ansibleのインベントリに設定した変数にアクセスする方法

January 26,2024 11:55 PM
Category:[ansible]
Tag:[ansible]
Permalink

ansibleのインベントリに設定した変数にアクセスする方法を紹介します。

1.問題点

ansibleで下記のインベントリを作成しました。

test00 ansible_host=192.168.0.10
test01 ansible_host=192.168.0.11
 
[all:vars]
ansible_user=test
ansible_ssh_pass=test
 
[server1]
test00
 
[server2]
test01
 
[server1:vars]
hoge=1
 
[server2:vars]
hoge=2

このインベントリでserver1ホスト指定で実行するときに、server2の変数hoge

[server2:vars]
hoge=2

の値を参照したいのですが、方法が分かりません。

ということで、ansibleのインベントリに設定した変数にアクセスする方法を紹介します。

2.ansibleのインベントリに設定した変数にアクセスする

ansibleのインベントリに設定した変数にアクセスするには、下記のように指定します。

hostvars[groups['server1'][0]]['hoge']

例:

- name: コマンド実行
  command:
    cmd: echo {{ hostvars[groups['server1'][0]]['hoge'] }}
  register: result
 
- name: "結果出力"
  debug:
    msg: "{{ result.stdout_lines }}"
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages