• 締切済み

シェルにて変数にDATE結果を代入したい

お世話になります。 試験管理PCから中継サーバを経由して、メインサーバにてDATEコマンドを発行し その結果を変数に代入後に、中継サーバと試験管理PCの日付を変更したいと考えてます。 本来であればNTPサーバがあり、全装置の日時が一致しているのが普通なのでしょうが、 開発環境ということもあり、NTPサーバも存在しておりませんし、外部にでも出れません。 telnetで中継サーバに接続後に、screenコマンドでメインサーバに接続しております。 expect内部で行いたいのですが、どのように記述したらよいのか分かりません。 是非ともご教授頂きたく、お願い致します。

みんなの回答

回答No.1

expect -c " set timeout 60 spawn telnet $ホスト名 expect \"login:\" send \"$アカウント\\r\" expect \"password:\" send \"$パスワード\\r\" send -- \"date \\r \" send \"exit\\r \" expect eof " > $ローカルファイル名 2>&1 $ローカルファイル名には出力内容が全部入ってると思うので、grepで必要な行だけピックアップして使う。 これは如何でしょうか?

関連するQ&A

  • expectでコマンド実行結果を変数に代入出来ない

    test.sh #!/bin/sh expect -c " set timeout -1 spawn telnet $1 expect "login:" ; send \"username\r\" expect "sword:" ; send \"password\r\" expect ${1} ; send \"start shell\r\" expect ${1} ; send \"set val=`date +%Y'-'%m%d`\r\" expect ${1} ; send \"echo $val\r\" expect ${1} ; send \"exit\r\" expect ${1} ; send \"exit\r\" exit " 例えばリモートホスト側で コマンド date +%Y'-'%m%d の実行結果を valに代入したいのですが 代入結果をechoコマンドで表示させても上記コマンド実行結果が 変数に代入されていないのか何も表示されません リモートホストに変数valを表示させるのがうまくいっていないんじゃないかと 思うのですが特殊文字($val)を正しく変数として解釈させる方法をご教示いただけませんでしょうか?

  • シェルスクリプトで困っています

    自分のLinuxマシン(PC1)から、イーサネットで繋がっているLinuxマシン(PC2)に、自動的にTelnetを用いてログインし、そこでいくつかの操作をするシェルスクリプトを作成中です。 Telnetでログインした後、PC2が持っているプログラムを走らせ、その結果を見て再度そのプログラムを走らせるか、次のプログラムへ移るかを、ユーザのキーボード入力にて判断可能なようにしたいと思っています。 "#!/usr/bin/expect"の、 "expect *** { send **** }"などを使えば、Telnetのような対話型アプリケーションに使えることが分かったのですが、ユーザからのキーボード入力を判定する方法が分かりません。。。 また、"#!/bin/sh"の、"read"コマンドを用いれば、ユーザからのキーボード入力を受け付けることが分かったのですが、Telnetなどをどう扱えばいいのかが分かりません…。 大変あいまいで、分かりにくい質問で申し訳ないのですが、どなたかお分かりになる方がいらっしゃればご教授ください。 分かりにくい点はいくらでも補足いたします。よろしくお願いいたします。

  • teratermとコマンドプロンプトの動作が違う

    コマンドプロンプトからできることがtelnetだとできません。 クライアント(windows7)でコマンドプロンプトからtelnetでサーバA(windows2008)に接続して、 サーバAを中継してさらにtelnetでサーバB(windows2008)に接続しています。 これをteratermでやるとサーバAには接続できるのですが、接続先のサーバAから サーバBには接続できません。なぜでしょうか。 teratermでサーバA上からtelnet 192.168.xx.xx(サーバB) とやってもプロンプトが戻ってくるだけです。 ↓こんなふうに >telnet 192.168.xx.xx >

  • expectの使い方について

    expectの使い方についてご教示頂きたいことがあります。 内容は以下の通りです。 1)スイッチ機器にtelnetし、自動的に設定を行うようにしたい。 この機器の通常のプロンプトは"goo#"とする "goo"はあらかじめ変数"host"として代入される。 telnet後、この装置のプロンプトが本当に goo#だったら"save"コマンドを実行する。 expect "${host}#" send "save\n" ここまではわかるのですが、ではgoo# 以外のプロンプトだったら即座に処理を中断 (別の処理)したいのです。 2)ログイン中に別ファイルを呼び出し、その中から1行ずつ抜き出して改行コードつきでコマンドを実行したい場合どうすればいいのか http://www.linux.or.jp/JM/html/expect/man1/expect.1.html このページは読んだのですが、いまいちよく理解できません。 よろしくお願いいたします。

  • telnetサーバのログインアカウントについて

    Windows2000, 2003Serverでtelnetサーバーを作ろうとしています。 Telnetのサービスを起動して、管理ツールからNTLM認証を無効にしています。 いざ、クライアント側からtelnetコマンドで接続してみると、ログインとパスワードが聞かれました。当然なのですが・・・。 このログインとパスワードはどこで設定されているものなのでしょうか。 管理者アカウントかと思ったのですが、はじかれました。 そこで調べたところ、サーバー側のグループに「TelnetClients」が必要で、そこに対象ユーザーを追加すればできるという記事を見かけたのですが、やってみたところ効果がありませんでした。 調べても出てこなかったので、実はとても簡単な話なのかもしれませんが、ご教授お願い致します。

  • telnetで接続した先のコマンドのバッチファイルを作成したい

    毎回動作確認のため、 1、クライアントPCからサーバへtelnetで接続して、 2、接続後、ログイン、動作確認のコマンドを打ちます。 毎回同じコマンドを打つので、 バッチファイルで対応しようかと思いますが可能でしょうか。 それとも他の別の方法がありますでしょうか。 宜しくお願いします。 1のバッチファイル telnet 192.168.0.2 2のバッチファイル (192.168.0.2のログインユーザ名) (パスワード) (動作確認のコマンド)… のようなイメージかなぁと考えています。 よろしくおねがいします。

  • telnetでメール

    telnetでSMTPサーバーへ25ポートで繋ぐと、コマンド(HELOやmailなど)を送り、ステータスコードなどを確認できる状態になると思います。「Ctrl+}」を押下するとtelnetのコマンドモード(サブコマンド)の状態になります。 ▼この「Ctrl+}」を押下する前のコマンドが打てる状態というのはtelnet接続というのでしょうか? ▼また、セッションモードというはtelnetで23ポートに繋ぎ、そのサーバーでコマンドを実行することをいうのでしょうか? ▼コマンドモード(サブコマンド)の利点として、Ciscoのshow sessionsコマンドのように自分がどれだけのサーバーにtelnetセッションを張っているのかわかるということでよいでしょうか? 他にコマンドモードを使う理由などございますでしょうか?状態を確認できるということはわかるのですが、設定ができるとネットで調べたらありましたが、よくわかりません。 ▼最後に、ブラウザやメールソフトは裏でtelnetを利用しているという認識でよろしいでしょうか? 長々となってしまいましたが、返答できる方いましたらよろしくお願いいたします。

  • telnet の方法

    Windows のコマンドプロンプトから、FreeBSD に telnet でログインしたいのですが、どうやったらいいのでしょうか? C:\>telnet Microsoft Telnet>open (to)192.168.1.20 接続中: 1192.168.1.20...ホストへ接続できませんでした: 接続に失敗しました と出ます。サーバー側の設定が必要なのでしょうか?

  • Webサーバ名を知りたい【linuxコマンド】

    linuxコマンドで、Webサーバ名を表示させるにはどうすれば良いでしょうか? 具体的には、あるサーバへtelnet接続して、何かコマンドを打って【Apache1.3】といった具合に表示させたいのですが、コマンドが解らず困っています。 申し訳ありませんが、どなたか御教授宜しくお願いします!

  • telnetで接続できなくなりました

    OSはWIN XPです。会社でレンタルしているサーバーにtelnetで接続できなくなってしまいました。サーバー会社は問題なく接続できているということなので私の使っているパソコンの問題のようです。コマンドウィンドウでtelnetサーバー名を指定するとポート23に接続できませんでした。と出ます。このパソコンのどこを変えればよいか教えてください。確か以前はこのパソコンで接続できていたはずなのですが。 よろしくお願いします。