• 締切済み

expectとspawnをSol10で

パスワードの自動入力のためにexpectとspawnをSolaris10で(Sparc)使いたいと思っていますが、インストールされていないようです。 どのようにすれば使えるようになるでしょうか。 よろしくお願いいたします。

  • annyG
  • お礼率70% (67/95)

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.4

solaris 8 -> solaris 9 -> solaris 10 とだんだんプリインストールされて いるフリーウェアが多くなってきていることは事実ですので、/usr/sfw/bin ディレクトリを覗いて tcl、tk、expect などのコマンドがインストールされ ているか確認してみると良いのでは? > Sol9では確かにその通りなのですが、Sol10ではそんなことをしなくても使 > えるという話もあって、 他の方も言われていますが、その情報ソースが知人であればその人に聞け ばいいことですし、Webの公開情報ということであれば少なくともURLくら いは提示できるでしょう。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「Solaris10 ならそんなことをしなくても使えるという話もある」ということなら, こんなところで聞くよりその話の元にあたった方が早いと思うなぁ. 少なくとも「インストールされていないのにインストールしなくても使える」という方法は思い付かない.

  • 774danger
  • ベストアンサー率53% (1010/1877)
回答No.2

No.1のかたが書かれているようにインストールするしかないでしょう ちなみに、expectをインストールするためにはtcl/tkも必要 http://www.limber.jp/?Solaris%2Fexpect%20for%20solaris Solaris9で確認済みのようですが、10でもいけるでしょう これくらいの情報探せないようではSolaris使うの止めたほうがいいですよ

annyG
質問者

補足

ご回答ありがとうございます。 Sol9では確かにその通りなのですが、Sol10ではそんなことをしなくても使えるという話もあって、ただ、その「そんなことをしなくても」というのがよくわからないでいます。 デフォルトで入っているどこかのパッケージにでも含まれているのかと思っているのですが、それがわからない、ということです。 よろしくお願いいたします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「インストールされていない」んだったらインストールすればいいのでは? ああ, できるかどうかは知らない.

関連するQ&A

  • Ubuntu expectコマンド

    端末でのexpectコマンドの使い方がわからないので質問します。 Windows10で WSLを使い、Ubuntuを使っています。Postgresqlをインストールし、 sudoコマンドでPostgresqlを起動しているのですが、パスワードの入力を自動化したくて、expectコマンドを使ったのですが、エラーが出てしまいました。端末に入力したコマンドは下記です。 expect -c "spawn sudo service postgresql start;expect [sudo] user01 のパスワード:;send パスワード\n ;interact" エラーは次のようになりました。 spawn sudo service postgresql start invalid command name "sudo" while executing "sudo" invoked from within "expect [sudo] user01 のパスワード:" どなたか、端末からexpectコマンドを使ってPostgresqlを起動する書き方を教えてくださいお願いします。

  • sol_8_202_sparcって?

    Solaris8をデフォルトでインストールすると cdromディレクトリに出来るsol_8_202_sparcディレクトリは使用方法はあるのですか?なぜ存在するのですか? ご回答よろしくお願いいたします。

  • expectの構文について

    次のスクリプトを実行しました。 #!/bin/bash user="sarigennu" password="sarigennupassword" passwd="passwd" useradd $user; expect -c " spawn $passwd $user expect Enter\ send $password send \r expect Retype\ send $password send \r expect eof exit 0 " その結果として下のように標準出力されました。 どうしたら成功するでしょうか(一般ユーザのパスワードを変更できるようになるでしょうか?) spawn passwd sarigennu Changing password for user sarigennu. New password: BAD PASSWORD: it's WAY too short Retype new password: No password supplied No password supplied No password supplied passwd: Authentication token manipulation error

  • UNIXでのEXPECTの使い方

    時間が来たら動くシェルを作っています。 コピー元ホストのloot/ABC/aaa.tarを、 コピー先ホストのloot/DEF/aaa.tarにSCPコマンドでコピーしたいのですが、 passwordを求められるので、EXPECTを使って、自動化しようとしてるんですけど、いまいちEXPECTの使用方法が分かりません・・・。 とりあえず作ったソースです。↓passwordは『saru』です。 expect ” spawn scp コピー元ホスト ABC/aaa.tar      コピー先ホスト DEF/aaa.tar expect { ¥”Are you sure you want to continue connecting (yes/no)?¥” { send ¥”yes¥r¥” expect ¥”password:¥” send ¥”(saru)¥r¥” } ¥”password:¥” { send ¥”(saru)¥r¥” } } interact ” 何がいけないのか全然分かりません。 どのようにしたら、passwordを書かないで、コピー 出来るようになりますか??

  • expectでscpのパスフレーズ入力を自動化

    別サーバーに存在するファイルを、scpでダウンロードしています。 これをcronを使用して自動実行させたいのですが、パスフレーズ入力の自動化で悩んでいます。 expectを使ってみましたが、以下のようにエラーもなく、反応でした。 expectの書き方が悪いのだと思いますが、ご教授いただけましたら助かります。 ○やりたいこと サーバーA(linux)から、サーバーB(linux, 192.168.1.100)のファイルをデイリーで自動ダウンロードしたい。 以下のtest.shを作って実行してみましたが、エラーも無く無反応です。 expectは導入されています。 ○環境 ・サーバーAからサーバーBへは、SSHでアクセスできる。 ・秘密鍵を/home/testuser/.ssh/に置いている。  ・サーバーBへは、パスフレーズを入力するだけでsshでログインできる。 ・パスワードでの認証はdisable ■手入力では、このようにファイルをダウンロードできています。 $ scp 192.168.1.100:/home/testuser/test.txt ./ Enter passphrase for key '/home/testuser/.ssh/id_dsa': ★ここでパスフレーズを手入力★ test.txt 100% 5 0.0KB/s 00:00 ■test.sh ----------- #!/bin/sh FILE=192.168.1.100:/home/testuser/test.txt TARGET=/home/testuser/ PASSWORD=hogehoge expect -c " set timeout 20 spawn scp $FILE $TARGET #expect \"Enter passphrase for key '/home/testuser/.ssh/id_dsa':\" ; #send \"$PASSWORD\r\"; " ■実行結果(エラー表示無し。ファイルはダウンロードされない) $ sh test.sh spawn scp 192.168.1.100:/home/testuser/test.txt /home/testuser/ $ 以上、よろしくお願いします。

  • expectを用いた正規表現[]のgrepについて

    題名のとおり、expectを用いた正規表現のgrepをしたいのですが、 以下のように記述し、入力し、実行すると expect -c " spawn ssh ~~~ expect \"password:\" send \"hogehoge\n\" expect \">\" send \"zgrep "探したいもの" /なんかのログ.log.gz | grep -v "[0-9]%"\n\" expect \">\" send \"exit\n\" " 以下のようにエラーが出てしまいます。 invalid command name "1-9" while executing "1-9" invoked from within [0-9]この部分を\[0-9\]このようにエスケープしてみても同じエラーが出てしまい、実行できません。 どのようにすれば正規表現として認識してくれるのでしょうか。 以上よろしくお願いいたします。

  • 自動scpスクリプトでキーが書き換わった場合にexpectでのif文の書き方は?

    度々スイマセン。 自動パスワード入力でscpコマンドを実行させたく思っています。 Win2kのCygwinで下記のスクリプトを試してみました。 $ cat ./test.sh #!/bin/bash -x HOST=foo.hoge.dyndns.net UNAME=user01 PASSWD=xxxxxxxx TARGET=/cygdrive/c/cygwin/home/root/hoge /usr/bin/zip -r $TARGET.lzh $TARGET expect -c " set timeout 20 spawn scp -P 60001 $TARGET.zip $UNAME@$HOST:$DSTNTN ; expect \"password:\" ; send \"$PASSWD\r\" ; interact " で、成功しましたがキーが変わった時には「yes」と自動で入力させたくて expect -c " set timeout 20 spawn scp -P 60001 $TARGET.zip $UNAME@$HOST:$DSTNTN ; if [ expect \"Are you sure you want to continue connecting (yes/no)?\" ] then ; send \"yes\r\" ;# yesと入力する。 fi; expect \"password:\" ; send \"$PASSWD\r\" ; interact " としてみたのですがキーが書き換わっていない場合(いきなりパスワードが聞かれる場合)、 user01@foo.hoge.dyndns.net's password: syntax error in expression "": premature end of expression while executing "if [ expect "Are you sure you want to continue connecting (yes/no)?" ] then " となってしまいます。一方、書き換わって、受け入れるかの問い合わせされた場合も同様の文法エラーとなってしまいました。 if文を入れる場合にはどう記述したらいいのでしょうか?

  • Expect->spawn($command, @parameters)について

    Perl初心者です。 Expect->spawn($command, @parameters)で実行できるコマンドは 複数でも良いのでしょうか? その場合コマンドと引数はどうやって判断されるのでしょうか?

    • ベストアンサー
    • Perl
  • expectを使用しない自動PW入力方法

    expectを用いてPWの自動入力方法は知っているのですが 今度使用するサーバーにexpectコマンドがインストールされていません。 su -u user -c command をシェル内で使用したいのですが、もちろんuserは他ユーザなのでPW入力を求められます。 何か逃げてとなるexpectコマンド以外で良い方法ありませんか?

  • Ruby expect 条件文(if文)の書き方

    Rubyでexpectライブラリを利用して、対話的な処理を自動で行おうと思っています。 その場合に、条件文(if文)をどうやって書いていいのか分からず困っています。 ※条件文の必要のないサンプルプログラムは検索したところいろいろあったのですが・・・ 例えば spawn("ssh #{hostname}") do expect(/User \(.*\): /) { |match| user } expect(/[Pp]assword: /) { |match| pass } expect(/[\>\$] /) {|match| command } このcommmandの実行結果がAならば expect(/A/) {|match| command2 } そうではなくBならば expect(/B/) {|match| command3 } end ぜひよろしくお願いいたします。

    • ベストアンサー
    • Ruby