Pengembalian Kereta VBScript


0

Saya menulis skrip VB berikut untuk menjalankan perintah dari WIN XP pada mesin Linux dan mengarahkan kembali perintah output ke file out.txt (di bawah C: \)

Skrip VB saya mencetak file / etc / hosts dari mesin Linux ke file out.txt

Script berfungsi dengan baik tetapi saya punya satu masalah:

/ etc / hosts file dicetak out.txt file dengan satu garis panjang, di tempat tiga baris

Contoh: (out.txt)

         127.0.0.1      localhost  19.20.183.99  MY_IP 10.10.10.10 LOOP

Di tempat untuk mencetak file host berikut out.txt

127.0.0.1      localhost
19.20.183.99  MY_IP
10.10.10.10 LOOP

Skrip VB saya

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

Mohon saran apa yang perlu saya perbaiki dalam skrip VB saya untuk mencetak file host yang benar (baris demi baris) dan bukan sebagai satu baris panjang?


Anda benar-benar harus memecahkan masalah maka Anda akan melihat bahwa file dengan huruf dan baris baru di linux, lebih kecil dari file dengan yang terakhir dan baris baru di windows. Bahkan jika di windows Anda melakukan gema; file1 maka Anda melihat file tersebut 3 byte, dan Anda bisa mengajukan pertanyaan -mengapa-. Dan cari tahu alasannya. Windows menggunakan CRLF sangat terkenal. jika Anda pernah membaca tentang carriage return Anda mungkin akan belajar windows menggunakannya dan linux hanya menggunakan LF. Saya pikir seseorang harus mengalami fakta itu puluhan kali.
barlop

Jawaban:


0

Sistem Linux menggunakan Line Feed untuk line break, sedangkan windows menggunakan Carriage Return + Line Feed. http://en.wikipedia.org/wiki/Newline

Dalam kasus Anda, saya akan menjalankan PATH melalui sed, untuk mengganti LF dengan CRLF

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

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


Saya belum membaca seluruh pertanyaannya, dan mengejutkan bahwa seseorang (si penanya rupanya) bisa tahu vbscript dan di mana file host berada di linux, dan tidak tahu tentang CRLF di windows dan LF di linux. tetapi bagaimanapun, Anda menulis "ganti LF dengan CRLF" Lalu Anda menulis / $ / \ r / 'apa gunanya penggantian itu - Anda mengatakan letakkan CR di akhir. yang tidak digunakan oleh OS apa pun. itu baik \ r \ n (CRLF) atau \ n (LF). tidak pernah adil (CR). dan pengganti Anda hanya menempatkan CR di sana.
barlop
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.