Нужно написать bat для виндов.
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
Нужно написать bat для виндов.
Привет народ,
сегодня руководство озадачило. нужно простой bat file для виндов
telnet x.x.x.x 80
<wait for a response 10 seconds>
Then get http
Then <crtl c>
Save output to the file.
Реально ли такое сделать в виндах?
сегодня руководство озадачило. нужно простой bat file для виндов
telnet x.x.x.x 80
<wait for a response 10 seconds>
Then get http
Then <crtl c>
Save output to the file.
Реально ли такое сделать в виндах?
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 491
- Joined: 09 Apr 2000 09:01
- Location: Tigard, OR
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
-
- Уже с Приветом
- Posts: 1407
- Joined: 07 Jan 2003 19:51
- Location: НорКа
Ну типа
в файл getstuff.js:
// Create an xmlhttp object:
var xml = WScript.CreateObject("Microsoft.XMLHTTP")
// Open the connection to the remote server.
xml.Open("GET", "http://www.linux.com", false)
// Actually Sends the request and returns the data:
xml.Send()
//write result into a file
var fs=WScript.CreateObject("Scripting.FileSystemObject")
var f=fs.OpenTextFile("c:\\stuff\\shit.txt",8,true)
f.Write(xml.responseText)
f.Close();
запускать из командной строки
csсript getstuff.js
в файл getstuff.js:
// Create an xmlhttp object:
var xml = WScript.CreateObject("Microsoft.XMLHTTP")
// Open the connection to the remote server.
xml.Open("GET", "http://www.linux.com", false)
// Actually Sends the request and returns the data:
xml.Send()
//write result into a file
var fs=WScript.CreateObject("Scripting.FileSystemObject")
var f=fs.OpenTextFile("c:\\stuff\\shit.txt",8,true)
f.Write(xml.responseText)
f.Close();
запускать из командной строки
csсript getstuff.js
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
Если все что надо сгрузить данные по HTTP в файл, то что-то типа такого.
Файл get.js:
Запуск: cscript get.js
Файл get.js:
Code: Select all
var xmlhttp = WScript.CreateObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","http://www.yahoo.com", false);
xmlhttp.send();
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var f = fso.CreateTextFile("C:\\TEMP\\yahoo.txt", true);
f.write(xmlhttp.ResponseText);
f.close();
Запуск: cscript get.js
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
A. Fig Lee wrote:не-нене.. Ждем тенгиза и пусть расскажет как легко ето сделать на Виндовс. А то в теории много защитников у МС.
Я таких страшных слов как telnet x.x.x.x или get http не знаю, а также не понимаю, что значит ctrl-c в этом контексте. а вообще - я конечно догадывался, что А. Фиг Лее на редкость мелочная зануда в любом вопросе - но чтобы настолько??? а windows я не "защищаю", я в ней каждый день работаю и не жалуюсь. "защищаю" же время от времени тех доверчивых, которым пытаются развешивать лапшу на уши невежественной или недобросовестной околотехнической халтуры. так как windows я знаю лучше, чем фреебздю, то и говорю я в основном о ней. если бы я знал линюх, то его бы тоже "защищал" когда следует.
Cheers
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
tengiz wrote:A. Fig Lee wrote:не-нене.. Ждем тенгиза и пусть расскажет как легко ето сделать на Виндовс. А то в теории много защитников у МС.
Я таких страшных слов как telnet x.x.x.x или get http не знаю, а также не понимаю, что значит ctrl-c в этом контексте. а вообще - я конечно догадывался, что А. Фиг Лее на редкость мелочная зануда в любом вопросе - но чтобы настолько??? а windows я не "защищаю", я в ней каждый день работаю и не жалуюсь. "защищаю" же время от времени тех доверчивых, которым пытаются развешивать лапшу на уши невежественной или недобросовестной околотехнической халтуры. так как windows я знаю лучше, чем фреебздю, то и говорю я в основном о ней. если бы я знал линюх, то его бы тоже "защищал" когда следует.
tengiz как штатными средствами в виндах зайти телнетом на 80й порт машины, get http и выйти из телнета. результаты сбросить в текстовый файл?
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Бродяга wrote:tengiz как штатными средствами в виндах зайти телнетом на 80й порт машины, get http и выйти из телнета. результаты сбросить в текстовый файл?
А WSH скрипты, который уже выложили не делают то что надо? Я серьёзно спрашиваю, потому что до меня не доходит, как через telnet сессию можно читать http - я конечно балда в web технологиях, но вроде это разные протоколы и разные TPC порты. Возможно я чего-то фундаментально не понимаю?
Cheers
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
<added>
Бродяга, ради Бога не поймите меня неправильно - я вообще-то мимо проходил, да вот только что-то меня достало фиглёвое мелочное занудство - только поэтому я и что-то ему брякнул. Так как я имею очень базовые и фрагментарные сведения в этой бесконечно далёкой от меня теме, я бы спокойно прошёл бы мимо и не морочил бы никому голову. Но фигли удалось то, что наверное до сих под удавалось может быть паре человек на привете за те три с половиной года, которые я здесь ошиваюсь - он успешно спровоцировал меня на грубость.
</added>
Бродяга, ради Бога не поймите меня неправильно - я вообще-то мимо проходил, да вот только что-то меня достало фиглёвое мелочное занудство - только поэтому я и что-то ему брякнул. Так как я имею очень базовые и фрагментарные сведения в этой бесконечно далёкой от меня теме, я бы спокойно прошёл бы мимо и не морочил бы никому голову. Но фигли удалось то, что наверное до сих под удавалось может быть паре человек на привете за те три с половиной года, которые я здесь ошиваюсь - он успешно спровоцировал меня на грубость.
</added>
Cheers
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
tengiz wrote:Я серьёзно спрашиваю, потому что до меня не доходит, как через telnet сессию можно читать http - я конечно балда в web технологиях, но вроде это разные протоколы и разные TPC порты. Возможно я чего-то фундаментально не понимаю?
Протокола как такового там нет. Достаточно зайти по telnet на 80-й порт, послать команду
GET / HTTP/1.0 \n\n
( \n = CR/LF ), в ответ telnet выдаст сайт. Через echo xxx | telnet это почему-то не работает.
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Бродяга wrote:...как штатными средствами в виндах зайти телнетом на 80й порт машины, get http и выйти из телнета. результаты сбросить в текстовый файл?
Code: Select all
set sh=WScript.CreateObject("WScript.Shell")
sh.Run "telnet localhost 80"
WScript.Sleep 500
sh.SendKeys "GET http://localhost/pupkin.html" + vbCrLf
WScript.Sleep 500
sh.SendKeys "exit" + vbCrLf
в фаил сами сбрасывайте.
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
tengiz wrote:Бродяга wrote:tengiz как штатными средствами в виндах зайти телнетом на 80й порт машины, get http и выйти из телнета. результаты сбросить в текстовый файл?
А WSH скрипты, который уже выложили не делают то что надо? Я серьёзно спрашиваю, потому что до меня не доходит, как через telnet сессию можно читать http - я конечно балда в web технологиях, но вроде это разные протоколы и разные TPC порты. Возможно я чего-то фундаментально не понимаю?
tengiz, нужен bat file что-бы юзверь кликнул на него и он сгенерил файл который мог-бы отправить кому надо. Я не знаю кому и зачем это надо. Я под унихом сижу. После очередных сокращений выяснили что те кто писал под винды исчезли как класс.
Через телнет можно на любой порт обратиться
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 16086
- Joined: 22 Apr 2003 17:57
- Location: Колыбель
blanko27 wrote:Бродяга wrote:...как штатными средствами в виндах зайти телнетом на 80й порт машины, get http и выйти из телнета. результаты сбросить в текстовый файл?Code: Select all
set sh=WScript.CreateObject("WScript.Shell")
sh.Run "telnet localhost 80"
WScript.Sleep 500
sh.SendKeys "GET http://localhost/pupkin.html" + vbCrLf
WScript.Sleep 500
sh.SendKeys "exit" + vbCrLf
в фаил сами сбрасывайте.
Спасибо.
Бог создал людей разными, Линкольн дал людям свободу, а Кольт всех уравнял.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Для правильных пацанов:
Code: Select all
int host_connect(const char* lpszHost, unsigned int nPort)
{
int sockfd = -1;
struct hostent *pHostdata;
struct sockaddr_in hostaddr;
if (!lpszHost)
return sockfd;
pHostdata = gethostbyname(lpszHost);
if (!pHostdata)
{
//check h_errno and get the description with hstrerror()
return -1;
}
if (pHostdata->h_addrtype != AF_INET)
{
//currently AF_INET6 is not supported
return -1;
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
return -1;
memset((void*) &hostaddr, 0, sizeof(hostaddr));
hostaddr.sin_family = AF_INET;
hostaddr.sin_port = htons(nPort);
#ifndef WIN32
hostaddr.sin_addr.s_addr = *((u_int32_t*)(*pHostdata->h_addr_list));
#else
hostaddr.sin_addr.s_addr = *((unsigned int*)(*pHostdata->h_addr_list));
#endif //WIN32
if (connect(sockfd, (struct sockaddr*) &hostaddr, sizeof(hostaddr)) < 0)
{
return -1;
}
return sockfd;
}
/*
**get_httpfile() - this function returns open temporary file that is a copy of
**the file lpszFile downloaded from lpszHost
*/
FILE* get_httpfile(const char* lpszHost, const char* lpszFile, int bGet, unsigned int nPort)
{
int sockfd;
int len;
char *pQuery;
int bRslt;
char szBuffer[2048];
FILE *f;
if (!lpszHost || !lpszFile || !strlen(lpszHost) || !strlen(lpszFile))
return NULL;
sockfd = host_connect(lpszHost, nPort);
if (sockfd == -1)
return NULL;
len = strlen(lpszHost) + strlen(lpszFile);
len += 60;
pQuery = (char*) malloc(len);
if (!pQuery)
return NULL;
sprintf(pQuery, "%s %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n",
bGet?"GET":"POST", lpszFile, lpszHost);
len = strlen(pQuery);
#ifndef WIN32
bRslt = (send(sockfd, (void*) pQuery, len, 0) == len);
#else
bRslt = (send(sockfd, pQuery, len, 0) == len);
#endif //WIN32
free((void*) pQuery);
if (!bRslt)
{
//sockfd was opened by host_connect()
#ifndef WIN32
close(sockfd);
#else
closesocket(sockfd);
#endif //WIN32
return NULL;
}
f = tmpfile();
if (!f)
{
#ifndef WIN32
close(sockfd);
#else
closesocket(sockfd);
#endif //WIN32
return NULL;
}
#ifndef WIN32
while(len = recv(sockfd, (void*) &szBuffer, sizeof(szBuffer), 0))
#else
while(len = recv(sockfd, (char*) &szBuffer, sizeof(szBuffer), 0))
#endif //WIN32
{
if (len == -1)
break;
fwrite((void*) szBuffer, 1, len, f);
}
#ifndef WIN32
close(sockfd);
#else
closesocket(sockfd);
#endif //WIN32
fseek(f, 0, SEEK_SET);
return f;
}
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
"Я что - подлец?!!! Ты пачему мэня не спрашиваешь?!!!"(c)
А wget?!!!
http://www.interlog.com/~tcharron/wgetwin.html
А wget?!!!
http://www.interlog.com/~tcharron/wgetwin.html
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
Бродяга wrote:tengiz, нужен bat file что-бы юзверь кликнул на него и он сгенерил файл который мог-бы отправить кому надо. Я не знаю кому и зачем это надо. Я под унихом сижу. После очередных сокращений выяснили что те кто писал под винды исчезли как класс.
Так уже было аж два WSH скрипта-близнеца (а теперь уже три), которые делают ровно что надо - для юзверя ведь абсолютно никакой разницы нет запустить .bat/.cmd или .js/.vbs?
Cheers