iT邦幫忙

0

如何用python寫一個判斷中華斷線自動重新撥號的exe檔案

  • 分享至 

  • xImage

中華電信規則每3天必需強制斷線重新撥號一次
如何寫一個.py文件打包成執行檔丟給排程管理員
每隔2天或每隔幾個小時檢查一次是否斷線?
斷線自動重新撥號連線.
或是在2天10小時的時候就自己先強制斷線重新撥號連線
換一個IP?
不知道有沒有哪位高手大大有寫過的?

看更多先前的討論...收起先前的討論...
win895564 iT邦新手 1 級 ‧ 2023-09-11 08:30:52 檢舉
我自己沒使用過中華電信 想問一下 執行完是會自動輸入密碼登入嗎
依照第一點
思路我覺得可以直接加入指令去判斷網路是否正常
判斷完之後在看是否要執行撥號程式
柯柯 iT邦新手 2 級 ‧ 2023-09-11 08:32:29 檢舉
如果不是單純為了寫py的話
用cmd的指令也可以
https://brooke2010.github.io/2017/01/12/windows10-auto-dial/
froce iT邦大師 1 級 ‧ 2023-09-11 09:00:52 檢舉
1. 用router/防火牆撥號,沒遇到過這個煩惱。
2. 用樓上提供的方法就好。
PIZZ iT邦新手 2 級 ‧ 2023-09-11 09:27:07 檢舉
去申請那組浮動的固定IP,用HNxxxx@ip.hinet.net撥接應該就沒這問題...
fdfanmo iT邦新手 5 級 ‧ 2023-09-12 06:56:16 檢舉
用AP沒這個問題是因為AP會自動重新撥號.但是用PC直接接小烏龜的話PC不會自動重撥.我是因為有一台電腦需要獨立上下傳到one driver所以才會直接接小烏龜喔.
froce iT邦大師 1 級 ‧ 2023-09-12 09:47:36 檢舉
> 我是因為有一台電腦需要獨立上下傳到one driver

頻寬是共用的,我是不懂這為啥會需要獨立一台...感覺沒啥好處啊。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2

其實我想問,中華電信什麼時候有這樣的規則的?

我本身也是用中華電信的。就我所使用的情況,我已經將近10多年沒在做重新連線的動作。
且本身我的電腦,也並沒有在關機。
還有一台SERVER是不能關機的。

回來原題。其實我倒是建議您使用一台AP來解決您的問題。
而不是用電腦來用軟體處理。

看更多先前的回應...收起先前的回應...
froce iT邦大師 1 級 ‧ 2023-09-11 09:08:01 檢舉

浮動制沒去申請固I的話好像就有這限制,申請固I的話就不會。

一般浮動的話。我是不會用PPPOE就是了。
直接使用DHCP的方式。
但確實,我沒在使用浮動的PPPOE。所以不清楚有這樣的限制。
但大多數我就算會使用。也會交給AP去處理。
反正AP斷線了會自動重連。

fdfanmo iT邦新手 5 級 ‧ 2023-09-12 06:57:36 檢舉

用AP沒這個問題是因為AP會自動重新撥號.但是用PC直接接小烏龜的話PC不會自動重撥.我是因為有一台電腦需要獨立上下傳到one driver因為AP我開多線跑到500m,ap的CPU會到100%蠻喘的所以才會直接接小烏龜喔.

「CPU會到100%蠻喘的所以才會直接接小烏龜喔」
話說....您居然相信中華電信小烏龜的能耐....

其實中華電信的小烏龜也是一台AP。只是您沒有管理員的帳密。
(雖然有其它方式可以拿到就是了)

所以...你這一句話,讓我有點納悶就是了。
啊??小烏龜就不會喘?

froce iT邦大師 1 級 ‧ 2023-09-12 09:51:47 檢舉

小烏龜就不會喘

說真的,小烏龜還真的比一般ap耐...

Z牌的我會相信。但D牌的我就SOSO了。
不過就我用的AP來說,是遠比小烏龜耐操就是了。
(曾經操到被中華電信限制連線,記得好像是一段時間達50G流量的樣子)

可能是我用的AP比較好,所以會有小烏龜很爛的錯覺。

1

可怕的Ai
底下是Bard的回答

以下是用 Python 寫一個判斷中華斷線自動重新撥號的 exe 檔案的範例:
Python

import os
import sys
import time
import subprocess

def check_internet():
  """
  檢查網路連線狀態

  :return:
    True 連線正常
    False 連線異常
  """
  ping_cmd = "ping -c 1 www.google.com"
  ping_result = subprocess.Popen(ping_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode("utf-8")
  if "1 packets transmitted, 1 received, 0% packet loss" in ping_result:
    return True
  else:
    return False

def main():
  """
  主程式
  """
  if check_internet():
    print("網路連線正常")
  else:
    print("網路連線異常,正在重新撥號...")
    subprocess.Popen("dialup", shell=True)

if __name__ == "__main__":
  main()

請謹慎使用程式碼。瞭解詳情

這個程式使用 ping 指令來檢查網路連線狀態。如果連線正常,程式會印出「網路連線正常」。如果連線異常,程式會印出「網路連線異常,正在重新撥號...」,然後使用 dialup 指令來重新撥號。

要將這個程式轉換成 exe 檔案,可以使用 pyinstaller 工具。以下是轉換步驟:

安裝 pyinstaller 工具:

pip install pyinstaller

將程式檔案存放在一個目錄中,例如 ./auto_dialup。

在 ./auto_dialup 目錄中執行以下命令:

pyinstaller --onefile auto_dialup.py

這會在 ./auto_dialup 目錄中生成一個名為 auto_dialup.exe 的檔案。

要執行這個 exe 檔案,可以雙擊它。

以下是這個 exe 檔案的使用說明:

程式會在後台執行,並不斷檢查網路連線狀態。
如果連線異常,程式會自動重新撥號。
可以使用 Ctrl+C 來停止程式。
看更多先前的回應...收起先前的回應...
fdfanmo iT邦新手 5 級 ‧ 2023-09-12 07:01:39 檢舉

了解了~謝謝..不過ai給的答案常常不能使用或是會出錯.但還是很需要AI.他真的幫了大家很多忙.這個程式碼執行出現錯誤

ping_result = subprocess.Popen(ping_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa6 in position 0: invalid start byte

他只是給方向
當然還要自己修正
如果你只想複製貼上
優先失業的就是你了

untitled iT邦新手 5 級 ‧ 2023-09-12 08:41:10 檢舉

這樣的人多的是,想要拿現成code直接用,工程師都滿街跑了

fdfanmo iT邦新手 5 級 ‧ 2023-09-14 07:42:34 檢舉

沒錯~如果AI可以完全取代工程師.那這個行業也就消失了

0
johnwu0113
iT邦新手 5 級 ‧ 2024-04-22 08:36:23

這個需求是透過執行檔方式丟給排程管理員,或許不需要python來實現PPPoE重播機制。

以下.bat 的方式在win7/win10都可以使用,應該可以滿足你的需求。

@echo off
Rasdial /disconnect
Rasdial username@hinet.net username@hinet.net password
@pause

我要發表回答

立即登入回答