I'm writing some code which takes a file, passes that file to one of several binaries for processing, and monitors the conversion process for errors. I've written and tested the following routine on OSX but linux fails for reasons about which I'm not clear. #run the command, capture the output so it doesn't display PTY.spawn(command) {|r,w,pid| until r.eof? do ##mark puts r.readline end } The comm
今日、あるプロラムを複数のマシン上で走らせるために、あらかじめ各マシンのssh鍵を収集しておく必要ができた。使用するマシンのssh鍵をほとんど持っていなかったため、マニュアルでするとなると毎回sshでログインしてyesって打たなきゃならない。そんなことはやっていられなかったので、Rubyのexpectライブラリを用いてyesって入力してくれるスクリプトを書いた。 ssh鍵を取得するためのスクリプトとして、今回は2つスクリプトを作成した。1つは汎用的で使いやすいexpect on Rubyなライブラリ。もう1つはそのライブラリを用いて複数マシンから連続的にssh鍵を収集するスクリプト。 最初の expect on Rubyライブラリは次の2つのページを参考に実装した。 Young risk taker.: Rubyのexpect.rbの使い方 http://www.ksky.ne.jp/~s
expectを使うと、対話ダイアログをうまく操作できる。 標準出入力をうまく扱うことが出来て、バッチ処理に向いている。よくできて便利らしい。 が、、、、 独自スクリプトなので面倒ですね。 さらにデフォルトでインストールされていない という使いにくさがありました 使い方 expect -c " swapn su expect 'Passwd:' send 'root_pw' " インストール sudo aptitude install expect 知識として仕入れました、実践投入するのはちょっと面倒ですね 参考資料 http://www.uetyi.mydns.jp/wordpress/command/entry-158.html man より抜粋 名前 expect - 対話的なプログラムとのやりとりを自動化するプログラム, バージョン 5 書式 expect [ -dDinN ] [
今更だけどexpect を使ったのでメモ EXPCETとは EXPECTは、Bashの対話プロンプトに自動入力するソフトウェア。 特定の文字列を見つけると,入力する。 なぜ expectなのか rsync のファイルを自動化したかった・・・・しかし、公開鍵(id_rsa.pub) が使えない。。RsyncをCronで自動実行しようとしたらパスワード入力がネックになって自動起動しない。で詰んだ。 仕方ないので expect で自動実行をすることに。 Expectインストール Ubuntuではデフォルトインストールされていなかったので。 sudo aptitude install expect Exceptコマンドを使う。 今回はExpectをつかってRsyncの起動。 rsync_example.la 1 #!/usr/bin/expect 2 3 #タイムアウト 4 set timeout
expectっていうコマンド(http://www.linux.or.jp/JM/html/expect/man1/expect.1.html) の存在は、最近、サーバ間でファイル転送しようと思った時に、scpしか選択肢がなくて、 自動化できない・・・とかいって調べてた時に知りました。 結局、その時は権限的にサーバにexpectコマンドを入れることができなかったので、 以下のようにJavaやってる人ならお馴染みのAntでやりくりしました。 # これはこれで中の実装がどうなってるのか気になるけど・・・ <scp file=”送信元フルパス” todir=”アカウント@ホスト名:送信先パス” trust=”true” password=”パスワード” /> んで、しばらくボケーっと過ごしていたのですが、 日々サービスの運用やってたりすると、毎日sshしまくるんですよね。 1日何回ユーザー名とパ
2024-02-02 BI Publisherで始めるデータ駆動型レポート作成 2024-01-09 AIの話題 2023-12-25 【MQL5】KuniRangeBreakoutEA 2023-12-24 MT5 EA 2023-12-10 pythonでseleniumを使う 2023-10-08 Relumeでサイトの骨格を作る AI プロンプト 2023-10-04 JHipsterでBuleprintを使いこなす 2023-09-05 ExcelファイルをAIに読ませる 2023-08-28 【Javascript】【CLIライブラリ】commanderの勉強 2023-05-30 figmaにプラグインをインストールする 2023-05-23 DeepFloyd IF 2023-05-16 GitLabでPlantUML使ってみる 2023-05-15 LDAPサーバをdoc
Expectの表面的な紹介 Expectは対話的なプログラムとのやりとりを自動化するためのプログラムです。プログラムといっても専用のコマンドを解釈して応答するインタプリタですので、書き方はスクリプト言語に似ています。 例えば expect -re ".*(yes/no):" { exp_send "yes\r" } と書くと、(yes/no):で終わる対話プログラムに対して、yesと打って改行する動作を自動化することができます。 Expectをインストールする Expectの公式サイトをみるとWindows版もいくつか提供されているのですが、現時点ではActiveStateのActiveTcl付属版しか手に入らないようです。Expectをインストールする前にActiveTclをインストールしておきましょう。 ActiveTclのインストールまで終わったら、\binに移動して、以下のコマンド
SSHパスワード省略について書くと,公開鍵エントリに埋もれてしまうのですが。。。 Sudoや、SSHを踏み台にしてその先のPCにRsyncするときなど、パスワード入力が毎回出てきて煩わしい.公開鍵が使えない業者のサーバーに限って,SSHで多段アクセスだったり頻繁にRsyncが必要だったりする ruby でパスワード入力する方法 #!/usr/bin/env ruby require 'pty' require 'expect' cmd = 'rsync -avz server0:/mnt/test /home/takuya ' PTY.getpty(cmd) do | i,o | o.sync = true i.expect(/password:/,10){|line| ##入力プロンプトくるまでreadline繰り返す puts line o.puts "my_pass" o.flush
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く