פקודות לינוקס ומיומנויות מעטפת
curl: לקוח שורת הפקודה שמריץ את האינטרנט
curl הוא לקוח ה-HTTP בכיס של כל ארגז כלים של פעולות: אבחון, ידידותי לצינור, וכנה לגבי מה שחזר. משטח הדגל שלו נראה עצום ובעיקר אינו במשחק: כתריסר דגלים מכסים את השימוש התפעולי היום-יומי, והידיעה שלהם היא ההבדל בין בדיקות תקינות תסריטאיות לברי מזל. הכלל שחוסך הכי הרבה איתור הוא טריוויאלי: הגדר --max-time בכל פעם, כי הסבלנות של curl היא אינסופית ושלך לא.
נקודות עיקריות
- חפש לפני שאתה מוריד: curl -sSI https://host מחזיר שיטה, כותרות וסטטוס ללא גוף; הוסף -v כאשר לחיצות ידיים של TLS, פרוקסי או כותרות מארחים מתנהגות בצורה מוזרה.
- משמעת הזמן הקצוב אינה ניתנת למשא ומתן: --connect-timeout 5 הורג חיבורים מתים, --max-time 15 הורג חיבורים איטיים; בדיקת בריאות ללא שניהם יכולה להימשך את ההפסקה שהיא הייתה אמורה לזהות.
- קודי יציאה הם החוזה בסקריפטים: 7 הוא חיבור סירוב, 28 הוא פסק זמן, 22 הוא שגיאת HTTP שהופיעה על ידי --fail; קרא את הקוד, לא רק את הפלט, או שהניטור שלך לא לומד כלום.
- התאמה בין נראות לאכיפה: -w '%{http_code} %{time_total}\n' מדווח על מה שקרה, בעוד --fail-with-body מציג את גוף השגיאה; בלי אחד מאלה, כישלון נראה בדיוק כמו הצלחה.
- בדוק מה המשתמשים פגעו בפועל: --resolve example.com:443:10.1.2.3 בודק קצה אחורי בעל שם ללא משחקי DNS, ו-H 'Host: vhost.example.com' מכסה את הצד vhost של אותה בקשה.
- העברות מקבלים דגלים מכוונים: -o נותן שמות לפלט, -L עוקב אחר הפניות מחדש שסקרת, --retry 3 --retry-delay 2 מרכך זרמים מתקלפים, ו-F מטפל בהעלאות מרובות חלקים.
- כותרות ושקעים נושאים את העולם שאינו דפדפן: -H 'הרשאה: נושאת ...' עבור ממשקי API ו--unix-socket /run/app/app.sock כדי לחקור שירותים מקומיים שאינם נוגעים כלל ב-TCP.
- הכר את שתי המלכודות הקלאסיות: משתני סביבת פרוקסי חוטפים בקשה ש-v חושף תוך שניות, והפניות שהופכות בשקט POST ל-GET אלא אם כן התכוונת לכך.
הערת שטח
בדיקת הבריאות שהייתה תלויה במשך חמש עשרה דקות הייתה סלסול ללא --max-time בתוך לולאת קרון, והיא החזיקה מעמד לאורך ההפסקה שהיא הייתה אמורה לזהות. פסקי זמן נכנסים כעת לפני כתובת האתר, באופן עקרוני.
שאלות נפוצות
מדוע יציאת curl 0 כשהאתר החזיר 500?
ההצלחה של curl פירושה שההובלה עבדה; שגיאות ברמת HTTP אינן נראות ללא --fail (יציאה 22) או קריאה של %{http_code} מ-w. תסריטי ניטור מתעקשים על אחד מהשניים.
curl או wget עבור סקריפטים?
curl עבור ממשקי API, כותרות, גופי POST ובקרה מדויקת; wget עבור שיקוף ורקורסיה. עבור GET חד פעמי, כל אחד מהם עובד, וצינור שמערבב את שניהם הוא בדרך כלל סימן שאיש לא החליט למי שייך את העבודה.
האם דילוג על אימות TLS מוצדק אי פעם?
לאבחון אינטראקטיבי אחד כנגד אישור מעבדה בחתימה עצמית, לפעמים; בכל דבר שתסריטאי או מונחה כתר, לא. -k משבית את ההמחאה היחידה שמונעת מאדם באמצע להחזיק את ההעברה שלך.
כיצד אוכל לגלות היכן בקשה איטית בעצם נעצרת?
משתני תזמון: -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} סה"כ:%{time_total}\n' ריצה מספר פעמים מפרידה בין התקלפות DNS לבין כאבי לחיצת ידיים לבין תקלות בקצה האחורי.
איך Kinetikatech מסייעת לך ב-פקודות לינוקס ומיומנויות מעטפת
לא צריך להיות מומחה ב-פקודות לינוקס ומיומנויות מעטפת: הפקודות והרגלי הסקריפט שמחליטים אם מנהל מערכת מפעיל שרת או נלחם בו: חיפוש, טרנספורמציה, העברה ופיקוח על טקסט ותהליכים עם הכלים הקיימים בכל התקנה בסיסית. בדיוק בשביל זה קיים אבטחת שרתי לינוקס וניהול שרתים — הקמה, הגנה, ניטור 24/7 ומהנדס תורן כל הלילה.