בולנט - דברים מיוחדים...     פרוטו - בניית אתרים

Israeli ASP Organization

ארגון ה-ASP הישראלי

מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > ASP

הפעלת תוכנות שירות של סביבת DOS מ ASP

הקדמה

מיקרוסופט כוללת עם מערכת ההפעלה מספר תוכנות שירות חשובות לאיתור תקלות ובדיקת רשתות tcp/ip לדוגמה התוכנית PING בודק את איכות הקשר בין מחשבים ברשת.
במאמר זה נלמד כיצד להשתמש באובייקטים כדוגמת WScript.Shell ו Scripting.FileSystemObject על מנת להריץ תוכניות אלו מתך ASP ולהציג את הפלט שלהן. למאמר מצורף קוד מלא של היישומים המוצגים בו.

הפעלת תוכנות שירות של סביבת DOS מ ASP
מיקרוסופט כוללת עם מערכת ההפעלה מספר תוכנות שירות חשובות לאיתור תקלות ובדיקת רשתות TCP/IP לדוגמה, התוכנית PING שולחת מספר מנות נתונים מהמחשב שלנו למחשב מרוחק ובודקת את איכות הקשר בניהם (כמה זמן לקח למנות להגיע ,כמה מנות אבדו בדרך ועוד ). הקש מחלון DOS במערכת ההפעלה את הפקודה

ping www.asp.org.il ותראה מה תקבל.
תוכנית נוספת היא netstat המציגה סטטיסטיקה ונתונים על חיבורי TCP/IP לשרת. הקש מחלון DOS במערכת ההפעלה את הפקודה netstat -n ותראה מה תקבל
תוכניות נוספות הם TRACERT הבודקת מסלול ניתוב למערכת מרוחקת או route המציגה את טבלת הניתוב המקומית (אם אתה רוצה ללמוד יותר על התוכניות הללו הקש את שם התוכנית בחלון DOS ללא פרמטרים נלווים, למשל רק את המילה PING ו ENTER ותקבל הסבר קצר עליהם).
ובכן חשבתי לעצמי כמה שימושי אילו יכולתי להפעיל תוכניות אילו מדף ASP ,הייתי יכול לקבל נתונים בזמן אמת על הרשת והשרת שלי או שרתים אחרים גם אם אני לא ליד השרת עצמו, אלא מכל מקום בו יש חיבור לאינטרנט.
מדוע זה נחוץ ? אולי רק דוגמה קטנה, לפני מספר שבועות תוך ניצול "חור במערכת ההפעלה " הותקפתי ע"י התולעת code red worm שתקפה אלפי שרתים ברחבי העולם, ראיתי שהשרת עובד לאט ומשהוא לא בסדר. רק כאשר הקשתי netstat –n חשכו עיני ראיתי שהשרת יצר אלפי חיבורי tcp/ip ומשתמשים בשרת שלי לתקוף שרתים אחרים - "מתקפת מניעת שרות" .
אז כיצד נצור דף ASP כנ"ל ? אפשרות אחת היא ליצור אובייקט COM ובו לפנות לפונקציות API מתאימות המפעילות תוכנות אילו (על API תוכלו לקרוא במאמרים קודמים שלי) נשמע מסובך – אכן כן.
אפשרות אחרת היא לרכוש אובייקטי COM מוכנים יש הרבה בשוק ואכן בחלקם השתמשתי, אבל אז מצאתי פתרון פשוט ואלגנטי ללא כל אוביקטי COM כלל.
הפתרון מורכב משלושה שלבים:

שלב א שימוש באוביקט WScript.Shell

אובייקט זה מאפשר לנו להריץ תוכניות מדפי ASP, כל תוכנית שתרצו!!!
למשל הקוד: Set WShShell = Server.CreateObject("WScript.Shell") RetCode = WShShell.Run("c:\winnt\System32\calc.exe",1,true) Response.Write(retcode) set WShShell= nothing יריץ את המחשבון כל פעם שנקרא לדף ה ASP
הפונקציה RUN מקבלת שלושה פרמטרים : הראשון שם ונתיב הקובץ להרצה , השני פרמטרים לגבי החלון בו תרוץ התוכנית - לא מעניין אותנו כאנשי APS והשלישי הוא ערך בוליאני הקובע האם הסקריפט של דף ה ASP ימתין עד לביצוע התוכנית ואז ימשיך לרוץ (TRUE ) או לא יחכה לסיום התוכנית וימשיך לרוץ מיד (FALSE ).
אם בחרנו ב TRUE הפונקציה RUN תמתין עד לסיום התוכנית ותחזיר ערך 0 אם הפעולה הצליחה או מספר שגיאה אם התוכנית נכשלה, בדוגמת הקוד הזו התשובה מאוחסנת במשתנה RetCode
אם נריץ את הקוד הבא Set WShShell = Server.CreateObject("WScript.Shell") RetCode = WShShell.Run("ping www.vega.co.il",1,true) set WShShell= nothing כל פעם שדף ה ASP ירוץ השרת ישלח PING לכתובת www.vega.co.il הבעיה היא כיצד ללכוד את הפלט.
אין שום תועלת בדף ASP השולח PING אם התשובה לא מוצגת בדף אלה בשרת (במקרה זה פרמטר החלון, בו לא דננו, הוא כזה שהתוכנית רצה בשקט אפילו במסך המחובר לשרת לא נקבל פלט).

שלב ב' אחסון הפלט בקובץ טקסט

בשלב זה נזכרתי בכמה פקודות DOS שלמדתי בימים עברו – תתפלאו אבל חיים עוד עמנו מספר אנשים שבמשך שנים ידעו רק DOS (-;
לדוגמה אפשר להגיד ל DOS אלכסן את הפלט של התוכנית בקובץ טקסט במקום להציג אותה על המסך.
הקש מחלון DOS במערכת ההפעלה את הפקודה

ping www.vega.co.il > c:\ping.txt תוצאת ה PING תישמר בקובץ הטקסט ping.txt כמובן שניתן לתת לקובץ כל שם אחר.
כמו כן ניתן להכין בDOS קבצי אצווה BATCH FILES המקבלים פרמטרים ומריצים שורה של פקודות במערכת ההפעלה. זהו קובץ טקסט רגיל המכיל פקודות DOS והנשמר עם הסיומת bat למשל xxx.bat .
אם תפתחו את הקובץ ping.bat המצורף למאמר הרי שתראו בו שורה אחת בלבד
ping %1 > %2 זה אומר שכאשר הקובץ ירוץ הוא יקבל שני פרמטרים ויריץ את הפקודה PING בצירוף שני הפרמטרים.
שימו לב רק במקרה שם קובץ ה BAT זהה לפקודה שהוא מריץ יכולתי לקרוא לו בכל שם אחר.
אם כך הדרך סלולה לבניית היישום שלנו:
1. בעזרת האובייקט WshShell נריץ את קובץ אצווה ping.bat
2. קובץ זה יריץ פקודת ping של מערכת ההפעלה תוך שהוא מקבל שני פרמטרים: הכתובת אליה ישלח ה PING (דומין או כתובת IP ) ושם הקובץ בו יאוחסן הפלט.
3. התוצאה תישמר בקובץ ping.txt גם כאן יכולתי לקרוא לקבצים בכל שם אחר, בדוק את הקובץ Ping.asp המצורף וראה כצד זה מבוצע .
חשוב! במאמר מובאים רק חלקים של הקוד ומוסברים העקרונות, על מנת לנתח את הקוד מומלץ להוריד את הקבצים המצורפים לשמור את כולם באותה מחיצה, לבדוק שבמחיצה זו יש הרשאת כתיבה, ולהריץ את קבצי ה ASP דרך השרת (לא נדרשת כל התקנה מיוחדת בנוסף) ולאחר מכן לעין בקוד.

שלב ג' יצירת הפלט

אם הפלט מאוחסן כקובץ טקסט הרי שאין לנו בעיה, ASP יודעת לקרוא קובץ טקסט בעזרת האובייקט Scripting.FileSystemObject וכול שנותר הוא להדפיס אותו למסך.

הנה חלק קוד המבצע את כל השלבים ויוצר PING
המשתנה DNAME מכיל את כתובת המחשב המרוחק אליו נשלח PING - דומין או IP והוא יכול להכיל ערך קבוע או תוצאה של שדה טופס

Set OFS = Server.CreateObject("Scripting.FileSystemObject") ilePath=left(Request.ServerVariables("path_translated"),_ len(Request.ServerVariables("path_translated"))-8) OutputTxtFile=FilePath & "ping.txt" BatComFile=FilePath & "ping.bat" set Shell=Server.CreateObject("WScript.Shell") ShellResult = Shell.Run(BatComFile & " " & Dname & " " & OutputTxtFile, 1, True) If ShellResult=0 then set objTxt=ofs.OpenTextFile(OutputTxtFile, 1) OutputTxt = objTxt.ReadAll OutputTxt = Replace(OutputTxt, vbCrLf , "<BR>") OutputTxt = Dname &"<BR>"& now &"<BR><BR> </FONT>"& OutputTxt Response.Write "<FONT color=brown>connection information pinging to: " & OutputTxt Else Response.Write "<FONT color=brown>Natestat command couldn't be executed " Response.Write "<BR>Error: "& ShellResult &"</FONT>" End If

למאמר צרפתי דוגמאות קוד למספר יישומים נוספים של הקונספט שהוצג, שחקו עם הקוד ותוכלו להריץ פקודות נוספות ויישומים אחרים (למשל פקודת DIR ב DOS )

להורדת קובץ ZIP עם הדוגמאות, לחץ כאן

בהצלחה



         

מחבר: אבי סולימןרמת קושי: 2  ||  ציון: (7.42857142857143)כל הזכויות שמורות ל-IAO ©

חנות לסטלן  |   מתכונים  |   חגי ישראל  |   פורטל משחקים  |   חנויות מחשבים ו-ציוד הקפי  |   מגזין מסטול לסטלן המצוי  |   קליפרים  |   גידול צמחים פרחים  |   ספא פינוק מושלם