Dapatkan output saat menggunakan dempul dari jarak jauh

0

Saya memiliki dua server yang berbeda (A dan B, keduanya adalah Windows) dan saya mengeksekusi dempul melalui baris perintah di antara mereka. Server A mengeksekusi skrip dari jauh di server B dan semuanya berfungsi dengan baik, tapi saya tidak bisa mendapatkan output (ERRORLEVEL) di server A setelah skrip dieksekusi di server B. Maksud saya, saya bisa mendapatkan output tetapi selalu mengatakan bahwa proses telah selesai dengan sukses bahkan jika proses di server B telah gagal.

Saya lampirkan contoh kecil dari proses (ExProcess.bat) yang saya miliki di server B:

set LOG_PATH=C:\Project\Logs
set BIN_PATH=C:\Project\bin

cd %BIN_PATH%
C:
echo %date% %time% >> %LOG_PATH%\logfile.txt
EXECUTE_MY_COMMAND >> %LOG_PATH%\logfile.txt
if not %ERRORLEVEL%==0 exit %ERRORLEVEL% 

Dan ini adalah bagaimana saya melakukan panggilan jarak jauh dari server A:

putty -ssh server02 -P 22 -l user1 -pw password1 -m C:\Project\SSH_PRG0001_CMPG0001.txt

SSH_PRG0001_CMPG0001.txt berisi kumpulan jarak jauh (C: \ ExProcess.bat)

Jika saya mengeksekusi di baris Perintah Windows% ERRORLEVEL% setelah saya menjalankan perintah dempul, saya tidak mendapatkan hasil yang benar dari proses yang saya jalankan dari jarak jauh.

Saya telah memeriksa bahwa proses jarak jauh mengembalikan kesalahan output yang benar di server B, tetapi masalah saya adalah bahwa saya tidak bisa mendapatkan output ini dari server A.

Terima kasih atas bantuan Anda

Yesus
sumber

Jawaban:

0

Ketika Anda menemukan, ini tidak akan berhasil.

%ERRORLEVEL%(yang sebenarnya bukan "output", melainkan fungsi dari shell lokal) mengembalikan status dari perintah terakhir yang dijalankan; pada server B, itu EXECUTE_MY_COMMAND, seperti yang Anda inginkan - tetapi pada A, itu malah putty! Karena Putty berhasil terhubung dan melakukan hal tersebut, %ERRORLEVEL%adalah 0, sebagaimana mestinya.

Anda dapat memodifikasi skrip Anda pada B untuk mengakhiri dengan sesuatu seperti echo %ERRORLEVEL%(alih-alih ifpernyataan Anda ), kemudian menangkap output itu pada A (misalnya melalui pengalihan) dan bereaksi sesuai itu. Atau, apa pun itu pada A yang merespons hasilnya, Anda dapat mempertimbangkan bereaksi pada B sebagai gantinya, membuat seluruh proses sepenuhnya mandiri pada server B dan hanya dipicu oleh koneksi dari A.

Kromey
sumber
Terimakasih atas tanggapan Anda. Saya telah menambahkan "echo" di akhir skrip alih-alih menggunakan pernyataan IF, tetapi ketika saya mencoba untuk mengarahkan output ke file datar itu tidak menulis apa pun. Sebagai contoh: putty -ssh server02 -P 22 -l user1 -pw password1 -m C: \ Project \ SSH_PRG0001_CMPG0001.txt> C: \ file.txt Terima kasih
Jesus
Ketika Anda menjalankannya tanpa redirection, apakah Anda melihat output yang diharapkan?
Kromey
Saya melihat bahwa proses gagal dan menulis 1 (gema 1 ketika gagal), tetapi saya tidak bisa mendapatkan kesalahan ini dari server yang membuat panggilan jarak jauh
Jesus