2016-03-22 22 views
0

を使用してTelnetセッションを介して変数にテキストファイルの内容をコピーする方法:私はテキストファイルに、端末に出力をリダイレクトしています次のプログラムをしているのpython

import telnetlib 
import time 
import string 


tn = telnetlib.Telnet("192.168.1.102") 
print "Attempting Telnet connection...." 
tn.read_until("login: ") 
tn.write("root1\n") 
time.sleep(1) 
tn.read_until("Password:") 
tn.write("\n") 
tn.write("\n") 
tn.read_until("[email protected]:~$") 
tn.write("su\n") 
tn.read_until("[email protected]:/home/root1") 
tn.write("\n") 
print "Telnet logged in successfully....\n" 
tn.write("head /proc/meminfo > /home/a.txt") 
tn.write("\n") 

私はしたいと思いますこのファイルのテキスト内容をバッファ変数にコピーして処理します。つまり、私はコンソール/端末からの読み込みを望んでいません。出力をテキストファイルにリダイレクトしてから、テキストファイルから読み込みたいだけです。 telnetlibはこれを達成するための直接的な機能を提供していますか? 「MYPC @ルート::/ホーム/ ROOT1」このコードは、リモートホスト 上のローカルファイルからの読み込み、次のコードを試してみてください、あなたはあなたのコマンドを実行した後、あなたが次の文字列を取得することを前提としていた

+0

入力テキストファイルのフローをどのように記述しますか?あなたは盲目的に値を書いてから、テルネットサーバーからの応答(あなたの持っているものと一致しません)を待つか、スリープ状態(1)、複数の応答を送信するタイミング(パスワードの後に​​2行を書くなど)。入力したテキストファイルのサンプルを提供することができますか?上のコードを参考にして、何をするのでしょうか? –

答えて

2

TELNETプロトコルは多かれ少なかれ遠隔の端末エミュレーションです。それは他のプロトコルがそれに対処するので、ファイル転送機能を提供しません。つまり、リモートシステムにファイルを書き込んだら、それをcatで表示し、catコマンドの出力を保存する必要があります。

また、FTP、RSYNC、SFTP、FTPSなどのファイル転送用のプロトコルを使用してリモートファイルをダウンロードすることもできます。あなたのリモートシステムでアクセス可能なものを使用してください。

1

EDIT

tn.write("cat /home/a.txt") 
tn.write("\n") 
data = '' 
while data.find("[email protected]:/home/root1") == -1: 
    data = tn.read_very_eager() 
print data 
+0

これは私が知っている。しかし、私は直接読んでみたいです。私はそれがテキストファイルからのみ読みたいです。つまり、出力をテキストファイルにリダイレクトしてテキストファイルから読み込みたいとします。この状態を投稿にも含めます。 –

+0

それでは、リモートホスト上のローカルファイルの内容を読むにはどうすればいいですか?(telnetlibライブラリを使用することをお勧めします) – Yaron

+0

更新されたコードはあなたのニーズに応えますか? – Yaron

関連する問題