需求很簡單:實現win10的開機自啓Flask網站,可這一點都不簡單

1.不需要性能,想腳本啓動,加到shell:startup裏就行了

Start.bat

python e:\flask\index.py


點擊執行沒問題,但不想要cmd這個黑窗口啊,百度了下windows的後臺啓動進程方法,加上了start/b ,然並卵。

2.然後想通過windows自家的IIS,據說是可以安裝fastcgi部署flask,具體點擊移步:http://luyaliang.blog.51cto.com/3448477/1949849

 

然而,我要告訴大家,這裏IIS不是重點。因爲部署訪問會報錯:

    ifaces.load_from_powershell()
  File"C:\Python34\lib\site-packages\scapy\arch\windows\__init__.py", line151, in load_from_powershell
    for i in get_windows_if_list():
  File"C:\Python34\lib\site-packages\scapy\arch\windows\__init__.py", line77, in get_windows_if_list
    ps = sp.Popen(['powershell', '-NoProfile','Get-WMIObject -class Win32_NetworkAdapter', '|', 'select Name,@{Name="InterfaceIndex";Expression={$_.InterfaceIndex}},@{Name="InterfaceDescription";Expression={$_.Description}},@{Name="InterfaceGuid";Expression={$_.GUID}},@{Name="MacAddress";Expression={$_.MacAddress.Replace(":","-")}}| where InterfaceGuid -ne $null', '|', 'fl'], stdout = sp.PIPE, universal_newlines= True)
  File"C:\Python34\lib\subprocess.py", line 813, in __init__
    errread, errwrite) =self._get_handles(stdin, stdout, stderr)
  File"C:\Python34\lib\subprocess.py", line 1033, in _get_handles
    errwrite =_winapi.GetStdHandle(_winapi.STD_ERROR_HANDLE)
OSError: [WinError 6] 句柄無效。

 

  • Subprocess.py     scapy\arch\windows\__init__.py 都不是自己的py文件,試着修改了下__init__.py 77 行,sp.Popen('…',stdin=sp.PIPE)     ,然後就不報錯了,頁面也出來了。

python scapy模塊一直執行錯誤:OSError: [WinError 9] bad file 描述符

估計還是和上面的報錯有關係,拿不到subporcess.Popen的stdin。後來就沒有然後了。。。


3.於是轉移陣地,把目光又轉回windows的腳本自啓動了。

    1. 查了下還有種方式是寫vb腳本來實現無窗口後臺運行:

flask_start.vbs

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "e:\flask\startNaNd",0


直接點擊運行也是沒有問題的,80端口如約而啓。

  1. 可重啓之後,等半天都啓不來,後來不用vbs腳本測試一下startNaNd報錯- -!:

大概的意思是subprocess.Popen()執行powershell 的命令執行超時了,命令大概是獲取ip地址和路由的網絡相關的信息的,所以,想是不是網絡那時沒啓來呢,網上搜了一下關於自啓動在網絡之後的問題沒有搜到有價值的東西。

後來就直接vbs 腳本sleep1分鐘,然後在執行startNaNd. 這樣是可以的。但一直不知道那個命令爲什麼會超時。難道是powershell這個網絡相關的模塊或服務沒啓來嗎?windows叫人難以琢磨!

set ws=WScript.CreateObject("WScript.Shell")
wscript.sleep 60000
ws.Run "e:\flask\startNaNd",0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章