Я пишу следующий сценарий VB для запуска команд из WIN XP на компьютере Linux и перенаправить команду вывода в файл out.txt (в C:\)

Мой скрипт VB я печатаю файл /etc /hosts с компьютера Linux в файл out.txt

Скрипт работает нормально, но у меня есть одна проблема:

Файл /etc /hosts был напечатан в файле out.txt с одной длинной строкой вместо трех строк

Пример: (out.txt)

         127.0.0.1      localhost  19.20.183.99  MY_IP 10.10.10.10 LOOP

На месте, чтобы напечатать следующий файл хоста в out.txt

127.0.0.1      localhost
19.20.183.99  MY_IP
10.10.10.10 LOOP

МОЙ VB скрипт

Const TARGET_HOST = "19.20.183.99"
const PATH =  "cat /etc/hosts" 
const LOGIN = "root"
const PASS = " dgdgd "
Const PLINKPATH="""C:\dir1\plink.exe"""
Set Sh = CreateObject("WScript.Shell")

CMD = " echo y | " &   PLINKPATH  & " -ssh -pw " & PASS & LOGIN & "@" & TARGET_HOST & " " & PATH 

Sh.Run "cmd /k" & CMD &  " > ""C:\out.txt""" , 1, True

Посоветуйте, пожалуйста, что мне нужно исправить в моем VB-скрипте, чтобы печатать правильный файл хостов (построчно), а не как одну длинную строку?

1 ответ1

0

В системах Linux для перевода строки используется перевод строки, а в Windows - возврат каретки + перевод строки. http://en.wikipedia.org/wiki/Newline

В вашем случае я бы запустил PATH через sed, чтобы заменить LF на CRLF

Const PATH = cat /etc/hosts | sed -e 's/$/\r/' 

http://en.wikipedia.org/wiki/Unix2dos

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .