Uzaktan macun kullanırken çıktı alın


0

İki farklı sunucum var (A ve B, ikisi de Windows) ve aralarındaki komut satırıyla macun çalıştırıyorum. A Sunucusu B sunucusundaki bir komut dosyasını uzaktan çalıştırır ve her şey iyi çalışır, ancak komut dosyası B sunucusunda çalıştırıldıktan sonra A sunucusundaki (ERRORLEVEL) çıktısını alamıyorum. B sunucusundaki işlem başarısız olsa bile işlemin başarıyla tamamlandığını

B sunucusunda sahip olduğum işlemin (ExProcess.bat) küçük bir örneğini ekliyorum:

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% 

Ve bu şekilde A sunucusundan uzaktan arama yapıyorum:

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

SSH_PRG0001_CMPG0001.txt uzaktaki grubu içerir (C: \ ExProcess.bat)

Eğer Windows Komut satırında% ERRORLEVEL% komutunu çalıştırırsam, macun komutunu çalıştırdığımda uzaktan çalıştırdığım işlemin doğru çıktısını alamıyorum.

Uzak işlemin B sunucusunda doğru çıktı hatasını döndürdüğünü kontrol ettim, ancak benim sorunum bu çıkışı A sunucusundan alamıyorum.

Yardımınız için teşekkürler

Yanıtlar:


0

Keşfettiğiniz gibi, bu işe yaramaz.

%ERRORLEVEL%(aslında, "çıktı" değil, yerel kabuğun bir işlevidir) yürütülen son komutun durumunu döndürür; B sunucusunda, EXECUTE_MY_COMMANDistediğiniz gibi - ama A yerine putty! Putty başarılı bir şekilde bağlandığından ve yaptığı şeyi yaptığı için %ERRORLEVEL%, olması gerektiği gibi 0'dır.

B'deki betiğinizi echo %ERRORLEVEL%(ifadeniz yerine if) gibi bir şeyle bitecek şekilde değiştirebilir , daha sonra bu çıktıyı A'da yakalayabilir (örneğin, yeniden yönlendirme yoluyla) ve buna göre tepki verebilirsiniz. Veya, A'ya ne olursa olsun, sonuca cevap veren, bunun yerine B'ye tepki göstermeyi düşünebilir, tüm süreci tamamen B sunucusunda kendi kendine yeten ve yalnızca A'dan gelen bağlantıyla tetikleyebilir hale getirebilirsiniz.


Cevabınız için teşekkürler. IF deyimini kullanmak yerine, betiğin sonuna "echo" ekledim, ancak çıktıyı düz bir dosyaya yönlendirmeye çalıştığımda hiçbir şey yazmıyor. Örneğin: macun -ssh sunucusu02 -P 22 -l kullanıcı1 -pw şifre1 -m C: \ Proje \ SSH_PRG0001_CMPG0001.txt> C: \ file.txt Teşekkürler
İsa

Yeniden yönlendirme olmadan çalıştırdığınızda, beklenen çıktıyı görüyor musunuz?
Kromey

İşlemin başarısız olduğunu ve 1 yazdığını (başarısız olduğunda yankı 1) görüyorum, ancak bu hatayı uzak çağrıyı yapan sunucudan alamıyorum
Jesus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.