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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
13 פוסטים 6 כותבים 569 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום