Próbuję skonfigurować serwer WWW przy użyciu tylko skryptów wsadowych systemu Windows.Jak reagować warunkowo na podstawie żądania przy użyciu netcat
mam już wymyślić następujący scenariusz:
@echo off
@setlocal enabledelayedexpansion
for /l %%a in (1,0,2) do (
type tempfile.txt | nc -w 1 -l -p 80 | findstr mystring
if !ERRORLEVEL! == 0 (
echo found > tempfile.txt
) else (
echo not-found > tempfile.txt
)
)
Jednak odpowiedź jest zawsze jedna prośba tyłu, to znaczy, jeśli mam wpisać coś takiego w przeglądarce:
REQUEST: localhost/mystring
będę się następującą odpowiedź:
RESPONSE: not-found
Dopiero w następnym żądaniu otrzymam corr ect odpowiedź na żądanie przedstawione powyżej.
Tak się dzieje, ponieważ natychmiast po otrzymaniu żądania netcat odpowiada na bieżącą zawartość pliku tempfile.txt, który nie został jeszcze zaktualizowany na podstawie żądania.
Czy istnieje sposób blokowania odpowiedzi, dopóki plik tempfile.txt nie zostanie zaktualizowany, ani żadna inna metoda, która osiągnie oczekiwany wynik?
Ty nadpisanie zawartości 'pliku tymczasowego .txt' z ciągiem "found" lub "not-found"; Twój kod nie powinien działać w ogóle. – SomethingDark
@SomethingDark Uważam, że był celowy. Nie są to logi. Mają zawierać zawartość HTTP. OP pyta się, w jaki sposób ustawić warunkowe wyjście 'nc' na podstawie zawartości nagłówka żądania przeglądarki. – rojo
@rojo - nadpisuje plik, który wysyła do netcata. Netcat powinien wymiotować błędy w lewo i prawo. – SomethingDark