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日何回ユーザー名とパ
Analyze and gain insights into the current state of your data. Built on a modular architecture, OpenDQ scales with your enterprise data management needs. Infosolve’s Zero Based Solutions provide clients with comprehensive data solutions that leverage the power of their enterprise data to achieve their business objectives and create strategic opportunities-- without the burdens of cumbersome licens
Build experiences that drive engagement and increase transactions Connect your users - doctors, gamers, shoppers, or lovers - wherever they are. Sendbird's chat, voice, and video APIs power conversations and communities in hundreds of the most innovative apps and products. Sendbird’s feature-rich platform, and pre-fab UI components make developers more productive. We take care of a ton of operatio
2024-12-02 Claud MCP 2024-11-26 AIの話題 2024-11-19 Windsurf 2024-11-18 selenium 究極の集中状態を実現する:プログラマーのためのディープワーク実践ガイド 2024-11-11 MYSQLのバックアップとローカル利用 2024-11-06 PrismaでGraphQL APIを自動生成しよう - チュートリアル PrismaとGraphQLで作るシンプルなAPI - クイックスタート 2024-11-04 おすすめされたフリーソフト 2024-11-01 Claude sonnet computer useを実践投入してみる MQL5 半値インジケータ作った 2024-10-28 「Computer use」Claude 3.5 SonnetでPCを操作 2024-10-26 脳腫瘍の開発中治療薬LY367385とリン
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ページを開く