סקריפטים שזקוקים ל-VPN פעיל לפני גיבוי מריצים לעתים קרובות את openvpn ישירות. זה נוטש את הפרופיל, ה-DNS וטיפול הנתיבים ש-Tunnelblick כבר מנהל. הדרך הנתמכת היא ממשק ה-AppleScript של Tunnelblick עצמו, שמקבל בקשות connect, state ו-disconnect עבור תצורה בעלת שם. השתמשו בו והניחו לאפליקציה להישאר אחראית.

דברו עם האפליקציה, לא עם openvpn

Tunnelblick מחזיק בפרופיל OpenVPN, בבחירת המנוע, בסקריפטים ובשילוב ה-DNS והנתיבים. קובץ בינארי נפרד של openvpn הוא סידור הפעלה אחר, לא קיצור דרך לאותו חיבור.

קריאה לממשק הסקריפטים של האפליקציה משמרת את הבעלות הזו ושומרת על כל בקשה ניתנת לבדיקה.

הדוגמאות כאן מניחות ש-Tunnelblick נמצא ב-Applications, שתצורה עובדת נקראת HQ, ושהוראות מורצות בהפעלה של משתמש ה-Mac המחובר. החליפו את השם בתצורה המדויקת שיש לכם.

הפעילו בדיוק פרופיל אחד בעל שם

בקשת connect נוקבת בשם התצורה. זו אינה בקשה להתחבר למה שנבחר לאחרונה.

הריצו אותה בהפעלת המשתמש שמחזיק בתצורה:

osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'

עברו את הנחיות הכניסה הרגילות. macOS עשוי לשאול אם לאפליקציה הקוראת מותר לשלוט ב-Tunnelblick; בדקו איזו אפליקציה ואיזה יעד לפני שתאשרו. אוטומציה שמדלגת על הדיאלוג הזה שוללת את תכליתו.

בקשת connect חוזרת לפני שהמנהרה עולה

מדריך הסקריפטים של Tunnelblick חד משמעי: connect חוזר לפני שהחיבור מסתיים. סטטוס יציאה אפס פירושו שהבקשה התקבלה, לא שתעבורה זורמת.

קראו את המצב בנפרד:

osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'

CONNECTED הוא תוצאה של מצב חיבור. הוא עדיין לא מוכיח שהמשאב הפרטי שהעבודה שלכם צריכה נגיש, לכן בדקו זאת בנפרד לפני שמתחילים עבודה תלויה.

פקדים אחרים בממשק הסקריפטים מכסים פעולות רחבות יותר ואינם נחוצים כשמשתנה פרופיל אחד בלבד.

המתינו עם מועד אחרון, ואז כשלו

תשאול ללא סוף הוא הדרך שבה סקריפט נתלה כל הלילה וחוסם את הריצה הבאה. תנו להמתנה מועד אחרון, מרווח קצר ותוצאת כשל מפורשת. התייחסו לכל מצב שאינו CONNECTED כלא מוכן, כולל מצבי הביניים. תיעדו את המצב האחרון שראיתם כדי שהכשל יסביר את עצמו.

לולאה תחומה נראית כך:

for i in $(seq 1 30); do
  state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
  if [ "$state" = "CONNECTED" ]; then exit 0; fi
  sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1

שלושים שניות הן דוגמה, לא פסק זמן כללי. בחרו מועד אחרון לפי נתיב האימות שבו הפרופיל באמת משתמש, ושמרו אותו ברשומת זרימת העבודה.

בדקו מצב ונתקו לפי שם

כדי לעצור את אותו פרופיל, קראו ל-disconnect עם אותו שם. זה שומר על בקשה מצומצמת ומשאיר תצורות אחרות בשקט.

osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'

שמרו את שם הפרופיל והבקר יחד ברשומת זרימת העבודה, יחד עם בדיקות האימות וההשלמה הצפויות. הרשומה הזו היא מה שהופך את הפקודה לניתנת לבדיקה כעבור שישה חודשים.

התנהגות הפעלה עם המחשב היא מצב אחר. השתמשו באפשרות ההפעלה המתועדת של Tunnelblick ובהגדרת האישורים שהיא מצפה לה. פקודה שמורצת בהפעלת שולחן עבודה מחוברת ושירות שעולה עם המכונה אינם חולקים הקשר. אל תניחו שסקריפט שעובד כשאתם מחוברים יפעל בעת האתחול. בדקו את נתיב ההפעלה בנפרד, עם אותו מועד אחרון ותיעוד.

מאמרים קשורים