私はPythonプログラミングが初めてです。私はこの問題を抱えています:テキストファイルのリスト(圧縮されているものとされていないもの)があり、次のことを行う必要があります:-サーバーに接続してそれらを開く-ファイルを開いた後、彼のコンテンツを取得して別のファイルに渡す必要があります私が書いたpython関数
def readLogs (fileName):
f = open (fileName, 'r')
inStream = f.read()
counter = 0
inStream = re.split('\n', inStream) # Create a 'list of lines'
out = "" # Will contain the output
logInConst = "" # log In Construction
curLine = "" # Line that I am working on
for nextLine in inStream:
logInConst += curLine
curLine = nextLine
# check if it is a start of a new log && check if the previous log is 'ready'
if newLogRegExp.match(curLine) and logInConst != "":
counter = counter + 1
out = logInConst
logInConst = ""
yield out
yield logInConst + curLine
def checkFile (regExp, fileName):
generatore = readLogs(fileName)
listOfMatches=[]
for i in generatore: #I'm now cycling through the logs
# regExp must be a COMPILE regular expression
if regExp.search(i):
listOfMatches.append(i)
return listOfMatches
これらのファイルに含まれる情報を詳しく説明するため。この関数は、3 行を使用して、これらのファイルに保存されているログを 1 行だけで書き込むことを目的としています...この関数は、ローカル マシンから読み取ったファイルに対して正常に動作していますが、リモート サーバーに接続する方法がわかりません。各ファイルの内容を文字列に保存せずにこれらの 1 行のログを作成し、文字列を操作します... リモート マシンに接続するために使用するコマンドは次のとおりです。
connection_out = Popen(['ssh', retList[0], 'cd '+retList[2]+'; cat'+fileName], stdout=PIPE).communicate()[0]
retList[0] と retList[2] は、user@remote と、アクセスする必要があるフォルダー名です。
よろしくお願いします!
アップデート:
私の問題は、最初にssh接続を確立する必要があることです:
pr1=Popen(['ssh', 'siatc@lgssp101', '*~/XYZ/AAAAA/log_archive/00/MSG_090308_162648.gz*' ], stdout=PIPE).communicate()[0]
開く必要があるすべてのファイルはリスト fileList[] に保存され、一部は圧縮 (.gz) され、一部は単なるテキスト ファイルです !! ボットが何も機能しない前にあなたが示したすべての手順を試しました... Popen 関数の 3 番目の引数を変更する必要があると思いますが、その方法がわかりません! 私を助けることができる人はいますか???