ジュニパールーターから設定を取得しようとしていますが、次の問題があります。
これを設定した後
stdin, stdout, stderr = client1.exec_command('show configuration interfaces %s' % SID)
CONFIG = stdout.read()
print CONFIG
それは私にこれらのようなものをもたらします
'description El_otro_Puerto_de_la_Routing-instance;\nvlan-id 309;\nfamily inet {\n mtu 1600;\n address 10.100.10.10/24;\n}\n'
問題は、その情報を次の形式で受け取りたいということです。
'description El_otro_Puerto_de_la_Routing-instance;
nvlan-id 309;
nfamily inet {
mtu 1600;
address 10.100.10.10/24;
}
したがって、「\ n」文字列を表示するだけでなく、\ nを実際には改行にしたいのです。
これをPythonインタープリターで実行している場合、出力のデバッグが容易になるため、実際の改行ではなく「\ n」として改行を表示するのがインタープリターの通常の動作です。 。インタプリタ内で実際の改行を取得する場合は、取得した文字列をprint
する必要があります。
これがプログラムの出力である場合(つまり、外部プログラムから改行エスケープシーケンスを取得している場合)、次を使用する必要があります。
OUTPUT = stdout.read()
formatted_output = OUTPUT.replace('\\n', '\n')
print formatted_output
これにより、エスケープされた改行が出力文字列の実際の改行に置き換えられます。
これも機能します:
CONFIG = """{}""".format(CONFIG)
必要なものの代わりに、文字列を文字列のリスト(1行あたり)に分割することもできます。
mystr = 'a\nb\nc'
mystr = mystr.split(sep='\n')
print(mystr)
#this will be your print output:['a', 'b', 'c']
for s in mystr:
print(s)
#your print output:
#a
#b
#c