דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע

לינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע

מתוזמן נעוץ נעול הועבר תכנות
13 פוסטים 6 כותבים 569 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי חוקר
    #1

    עלי לקבל ולכתוב נתונים באמצעות HTTP לבקר הנמצא ברשת חיצונית.
    עד עכשיו הבקר היה חשוף ישירות לפורט חיצוני אך עתה הם קיבלו הוראה ממערך הסייבר שעליהם לחסום את הפורט הפתוח ולהתחבר באמצעות VPN בלבד.
    יש שם Fortinet והם יצרו שם חשבונות VPN.
    ולכן הקמתי שרת מיוחד שיחובר ל VPN (חששתי לשבש את פעילות כרטיס הרשת בשרת שלי + לא להיכנס לבעיות אבטחה שהשרת שלי פתוח מקומי אצל לקוח..)
    בלינק זה מצאתי הנחיות איך להתקין שירות התחברות ל VPN של Fortinet וזה עובד מצויין.
    הבעיה היא שלא מצאתי דרך מובנית בתוכנה לרוץ ברקע, (למען האמת כלל לא מצאתי תיעוד מסודר) למרות שעל פניו כאן מופיע שיש לזה תמיכה שנוספה לזה בהמשך.
    ניסיתי לעבוד עם פתרון של הפעלה התהליך עם screen אבל הבעיה היא שכאשר החיבור נותק אין לי משהו שמזהה את זה ומפעיל את הריצה מחדש.
    אין לי נסיון בהפעלת שירותים בלינוקס, ולכן אשמח לעזרה איך ניתן להגדיר כשירות שירוץ קבוע ברקע וכן יופעל אוטומטי בהפעלת השרת + יזהה שהחיבור נפל וינסה להתחבר אוטומטית שוב ושוב.
    אציין שאני מתחבר מnodejs לקריאה והכתיבה (השרת שלי היוזם והתקשורת חד כיוונית בקשה מהשרת שלי לבקר המרוחק).
    אם יש פתרון שהnodejs יתחבר ישירות באמצעות VPN, ו/או ב PHP זה גם יעזור לי.
    תודה רבה

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לחוקר ב נערך לאחרונה על ידי dovid
      #2

      @חוקר כתב בלינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע:

      אם יש פתרון שהnodejs יתחבר ישירות באמצעות VPN, ו/או ב PHP זה גם יעזור לי.

      אני גם חושב שקודם כל תסדוק את זה.

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

      זה מדריך
      https://linuxhandbook.com/create-systemd-services/

      מדריך קצר משלי, אתה יוצר קובץ בנתיב etc/systemd/system/, עם שם שתזכור עם סיומת .service:

      sudo nano /etc/systemd/system/your-name-of-service.service
      

      בקובץ אתה שם תוכן כזה, שים לב לחלקים שעליך לשנות לפי הצרכים שלך:

      [Unit]
      Description=Your Description About This Service
      
      [Service]
      WorkingDirectory=/var/www/helloapp
      ExecStart=/etc/path-to-exec/proccess
      Restart=always
      # Restart service after 10 seconds if the dotnet service crashes:
      RestartSec=10
      SyslogIdentifier=short-name-for-logs
      User=ubuntu
      
      [Install]
      WantedBy=multi-user.target
      

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

      sudo systemctl enable your-name-of-service.service
      

      מפעיל אותו:

      sudo systemctl start your-name-of-service.service
      

      ובודק את מצבו:

       sudo systemctl status your-name-of-service.service
      

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • ח מנותק
        ח מנותק
        חוקר
        כתב ב נערך לאחרונה על ידי חוקר
        #3

        @dovid תודה רבה
        זה לא היה כ"כ קל, אבל ב"ה בסוף הצלחתי
        בעיה אחת הייתה שזה צריך לרוץ על משתמש רוט, נוסיתי להוסיף sudo לפני הפקודה בשורה של ExecStart אך זה הכשיל את הפקודה, ולכן שיניתי שירוץ כ root.
        בנוסף, משום מה לא הצלחתי לעבוד בצורה של הגדרת הנתיב של הפעולה בתיקיית המשתמש של אבונטו שם נמצא קובץ התצורה, ולכן הגדרתי נתיב אבסולוטי לקובץ והשמטתי את ההגדרה של WorkingDirectory ורק אז זה עבד לי.
        אצטרך לעקוב בעוד 24 שעות שהחיבור תקין ואז אוכל לוודא שזה מופעל מחדש אוטומטי (לבדוק בלוג בהמערכת האם הייתה הפעלה מחדש), בדר"כ עד כה לא היה לי רצף של 24 שעות.
        להלן הקוד המלא ששמתי

        [Unit]
        Description=Vpn on Fortinet Fot Project 14
        After=network.target
        
        
        [Service]
        #WorkingDirectory=/var/home/ubuntu/
        ExecStart=openfortivpn -c /home/ubuntu/openfortivpn.conf
        Restart=always
        # Restart service after 10 seconds if the dotnet service crashes:
        RestartSec=10
        SyslogIdentifier=vpn14-log
        User=root
        
        [Install]
        WantedBy=multi-user.target
        
        תגובה 1 תגובה אחרונה
        0
        • מוטי מןמ מנותק
          מוטי מןמ מנותק
          מוטי מן
          כתב ב נערך לאחרונה על ידי מוטי מן
          #4

          @dovid תודה, בדיוק הייתי צריך את זה גם

          אבל יש לי בעיה, יש לי שורה בקוד שקוראת את התוכן של קובץ מסויים מהתיקייה בשרת

          const fileContent = fs.readFileSync(filePath, 'utf-8');
          

          ובשורה הזו הקוד נופל (בדקתי וזה עובד מצוין ללא זה), ובאופן הרגיל זה כן עובד עם זה, מה יכול להיות הבעיה?

          ברגיל אני מריץ את זה כמשתמש ubuntu, וככה הגדרתי (גם לי זה עשה כמה שגיאות עד שהצלחתי ללמוד איך להפעיל את זה ב"ה 🙂 )

          [Unit]
          Description=node app Service
           
          [Service]
          ExecStart=/home/ubuntu/.nvm/versions/node/v14.17.0/bin/node /var/www/node/index.js
          Restart=always
          
          RestartSec=10
          SyslogIdentifier=short-name-for-logs
          User=ubuntu
           
          [Install]
          WantedBy=multi-user.target
          
          צבי-שצ תגובה 1 תגובה אחרונה
          0
          • צבי-שצ מחובר
            צבי-שצ מחובר
            צבי-ש
            השיב למוטי מן ב נערך לאחרונה על ידי
            #5

            @מוטי-מן כתב בלינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע:

            @dovid תודה, בדיוק הייתי צריך את זה גם

            אבל יש לי בעיה, יש לי שורה בקוד שקוראת את התוכן של קובץ מסויים מהתיקייה בשרת

            const fileContent = fs.readFileSync(filePath, 'utf-8');
            

            ובשורה הזו הקוד נופל (בדקתי וזה עובד מצוין ללא זה), ובאופן הרגיל זה כן עובד עם זה, מה יכול להיות הבעיה?

            ברגיל אני מריץ את זה כמשתמש ubuntu, וככה הגדרתי (גם לי זה עשה כמה שגיאות עד שהצלחתי ללמוד איך להפעיל את זה ב"ה 🙂 )

            [Unit]
            Description=node app Service
             
            [Service]
            ExecStart=/home/ubuntu/.nvm/versions/node/v14.17.0/bin/node /var/www/node/index.js
            Restart=always
            
            RestartSec=10
            SyslogIdentifier=short-name-for-logs
            User=ubuntu
             
            [Install]
            WantedBy=multi-user.target
            

            ה filePath שכתבת, הוא נתיב ביחס לתיקייה או ביחס לכל השרת?

            (האם הוא

            ${filePath}/var/www/node/
            

            או

            /${filePath} 
            

            )

            כיף לגלות דברים חדשים.
            חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

            מוטי מןמ תגובה 1 תגובה אחרונה
            1
            • מוטי מןמ מנותק
              מוטי מןמ מנותק
              מוטי מן
              השיב לצבי-ש ב נערך לאחרונה על ידי מוטי מן
              #6

              @צבי-ש לא, זה ללא "/" בכלל, זה קובץ שממוקם באותה תיקייה של הindex.js

              זה שהשורה שבה זה נופל

              if (await licenseVerification(call.values.idUser, call.ApiDID) === true) {
              

              וזה הפונקציה licenseVerification

              function licenseVerification(idUser, numberDid) {
                  const filePath = 'authorized_numbers.ini';
                  const fileContent = fs.readFileSync(filePath, 'utf-8');
                  const numbersArray = fileContent.split('\n');
              
                  if (numbersArray.includes(numberDid)) {
                      return true;
                  } else {
                      return false;
                  }
              }
              
              צבי-שצ תגובה 1 תגובה אחרונה
              0
              • צבי-שצ מחובר
                צבי-שצ מחובר
                צבי-ש
                השיב למוטי מן ב נערך לאחרונה על ידי צבי-ש
                #7

                @מוטי-מן כתב בלינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע:

                @צבי-ש לא, זה ללא "/" בכלל, זה קובץ שממוקם באותה תיקייה של הindex.js

                תנסה לציין לו את הנתיב המלא.

                const filePath = '/var/www/node/authorized_numbers.ini';
                

                כיף לגלות דברים חדשים.
                חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

                מוטי מןמ תגובה 1 תגובה אחרונה
                1
                • מוטי מןמ מנותק
                  מוטי מןמ מנותק
                  מוטי מן
                  השיב לצבי-ש ב נערך לאחרונה על ידי מוטי מן
                  #8

                  @צבי-ש אבל אז אני יהיה מוגבל למבנה התיקיות הנוכחי..
                  יש דרך לקבל את התיקייה שבה נמצא קובץ הjs?

                  עריכה: שאלתי את ג'י פי טי, וזה מה שהוא הביא לי, אנסה בהמשך בעז"ה

                  const path = require('path');
                  
                  // נקבל את נתיב התיקייה שבה נמצא הקובץ הנוכחי
                  const currentDirectory = __dirname;
                  
                  // נקבל את נתיב התיקייה המלא של קובץ ה-JavaScript
                  const scriptPath = path.join(currentDirectory, 'index.js');
                  
                  console.log('Current Directory:', currentDirectory);
                  console.log('Script Path:', scriptPath);
                  
                  
                  צבי-שצ dovidD 2 תגובות תגובה אחרונה
                  0
                  • צבי-שצ מחובר
                    צבי-שצ מחובר
                    צבי-ש
                    השיב למוטי מן ב נערך לאחרונה על ידי
                    #9

                    @מוטי-מן כתב בלינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע:

                    @צבי-ש אבל אז אני יהיה מוגבל למבנה התיקיות הנוכחי..
                    יש דרך לקבל את התיקייה שבה נמצא קובץ הjs?

                    עריכה: שאלתי את ג'י פי טי, וזה מה שהוא הביא לי, אנסה בהמשך בעז"ה

                    אני לא זכרתי בע״פ אז חיפשתי בגוגל 🙂
                    ״get path in nodejs״
                    וזה התוצאה הראשונה
                    https://stackoverflow.com/questions/3133243

                    כיף לגלות דברים חדשים.
                    חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

                    תגובה 1 תגובה אחרונה
                    2
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב למוטי מן ב נערך לאחרונה על ידי
                      #10

                      @מוטי-מן בדיוק בשביל הבעיה הזאת יש את הworkingDirectory. תבדוק אם זה עוזר.

                      @חוקר הקיצור ~ הוא לא אמיתי, אלא קיצור של הבש (השפה של הטרמינל באובנטו) כמדומני, אם אני זוכר מה ש@yossiz למדני.
                      כמו"כ הWorkingDirectory צריך להפנות לנתיב מהוחלט שאתה רוצה שייחשב אצל היישום הרץ "תיקיה נוכחית" (לעניין כתובות יחסיות מתוך היישום).

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      מוטי מןמ תגובה 1 תגובה אחרונה
                      2
                      • מוטי מןמ מנותק
                        מוטי מןמ מנותק
                        מוטי מן
                        השיב לdovid ב נערך לאחרונה על ידי
                        #11

                        @dovid תודה! זה אכן עזר 🙂

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

                        חגיח תגובה 1 תגובה אחרונה
                        2
                        • חגיח מחובר
                          חגיח מחובר
                          חגי
                          השיב למוטי מן ב נערך לאחרונה על ידי
                          #12

                          @מוטי-מן כתב בלינוקס אבונוטו קבלת נתונים משרת מרוחק באמצעות VPN של Fortinet/הרצת תהליך קבוע:

                          מי אמר שלינוקס זה מסובך?

                          https://web.mit.edu/~simsong/www/ugh.pdf

                          מִזְכֶה (קרדיט) ל @yossiz על שהכיר לי את הספר הזה.

                          yossizY תגובה 1 תגובה אחרונה
                          2
                          • yossizY מנותק
                            yossizY מנותק
                            yossiz
                            השיב לחגי ב נערך לאחרונה על ידי
                            #13

                            @חגי אני לא חושב שרוב הספר רלוונטי להיום, ו@מוטי-מן לא צריך להיבהל ממנו

                            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                            תגובה 1 תגובה אחרונה
                            1

                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום