bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

簡明linux命令 linux命令大全詳解

pexpect 跨平臺(WIN、LINUX)簡明教程

詳細的內容可以參考下面的參考文檔,下面的內容主要是為網絡設備運維人員使用的pexpect 跨平臺簡明教程。

成都創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、做網站、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的翁源網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

Expect 程序主要用于人機對話的模擬,就是那種系統提問,人來回答 yes/no ,或者賬號登錄輸入用戶名和密碼等等的情況。

pexpect是 Don Libes 的 Expect 語言的一個 Python 實現,是一個用來啟動子程序,并使用正則表達式對程序輸出做出特定響應,以此實現與其自動交互的 Python 模塊。它可以用來實現與ssh, ftp, telnet等程序的自動交互。

send命令后執行結果內容保存在buffer中,這時child.expect('keyword')后,child.before即為“keyword”之前的字符串,child.after即為匹配的”keyword”字符串。

command的執行結果都保存在一個buffer中,每次執行expect時都從buffer中開始檢查匹配的pattern,如果找到了匹配的pattern,則所有在匹配處之前的內容都從buffer中清除。

(這邊沒有看明白也沒有關系,可以看后面的實踐篇例子)

通常維護人員有的偏向于用WIN系統,有的偏向于LINUX系統。所以前期團隊希望形成一個統一框架的時候就出現了一個難題。框架如何適用于不同的系統。

LInux系統pexpect包,win系統前期嘗試使用winpexpect,但是程序改動很大,并沒有調試成功。

如何在WIN系統使用python的pexpect包很難找到相關資料,某乎上都是類似的疑問沒有解答。

團隊成員增加后,終于有了新的思路 , 團結就是力量 。

通過這個模塊進行不同系統的適配。

將plink.exe裝在python的文件夾在python的安裝目錄下,win系統可以同樣使用pexpect模塊

參考信息1:Pexpect 官方文檔 New in version 4.0: Windows support。Pexpect can be used on Windows to wait for a pattern to be produced by a child process, using [ pexpect.popen_spawn.PopenSpawn ]

參考信息2:PuTTY是一個Telnet、SSH、rlogin、純TCP以及串行接口連接軟件。plink是可以獨立使用的exe實現形式,可以讓我們直接在命令行制定好命令,然后執行,完成后自動關閉session。ssh是一個安全通道協議。plink是這個通道協議的一個實現 [圖片上傳中...(-572001-1587612890428-0)]

從官方文檔來看,

sendline() 和 send() 唯一的區別就是在發送的字符串后面加上了回車換行符,這也使它們用在了不同的地方:

只需要發送字符就可以的話用send()

如果發送字符后還要回車的話,就用 sendline()

但是在調測過程中,WIN系統下命令輸入后,child.before始終得不到預想中的結果。

經過逐步排查,發現在WIN系統下只能使用send() ,如果使用sendline() ,第一次交互沒有問題,后續交互就開始問題。

WIN系統下child.before輸出為b'byte型,做判斷時要轉為str型。具體可以參考最后面一篇講編碼類型的文章,講的很詳細。

例子1

send Username后,child.before一直到'Tac_Userna',child.after為‘me:’,child.buffer為空。

expect關鍵字assword:后,child.before回顯一直到keyword之前,child.after為keyword,child.buffer為空。

例子2

下發command命令,child.before維持原來的不變,expect到keyword以后,child.before變為下發command命令后的設備回顯。

參考文檔

官方文檔

探索Pexpect

Pexpect示例及使用Tips

Python Pexpect模塊講解

Pexpect模塊使用說明

windows下使用plink實現全自動登陸ssh

Python3_字符編碼

『Linux 干貨』#1 終端與Shell(簡明)

繼 Git 后貴系的另一個暑培項目,講授 Linux 的基本用法,恰好這學期「操作系統」課程實驗需要用到 Linux,而且實驗室的服務器也需要學習相關用法,故學之。

本文部分內容參考了清華 ZAH 同學的教程,部分參考了 劉遄 老師的《 Linux 就該這么學 》, 菜鳥教程-Linux 。

Linux,全稱 GNU/Linux,是一套免費使用和自由傳播的類 Unix 操作系統。相比于其他系統,Linux 更加穩定且有效率、更加安全、相對不耗資源……以至于幾乎所有 長期穩定運行的網站服務器 上、在 處理大數據的集群系統 中,以及需要 協同工作的服務器環境 都采用 Linux 系統。

Linux 嚴格來說是單指操作系統的 內核 ,因操作系統中包含了許多用戶圖形接口和其他實用工具。如今 Linux 常用來指「基于 Linux 的完整操作系統」,內核則改以「Linux 內核」稱之。

一些組織或廠商將 Linux 內核與各種軟件和文檔 包裝 起來,并提供系統安裝界面和系統配置、設定與管理工具,就構成了 Linux 的發行版本。

在學習 Linux 的過程中,有幾個易混淆的概念:

命令行界面(Command-Line Interface,CLI)是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令后,予以執行。也有人稱之為字符用戶界面(Character User Interface,CUI)。

一般來說,在 服務器 中較多采用的是 CLI 界面,或許有以下幾點原因:

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 等系統的橋梁,如同「 殼 」一般。它的本質是一個 命令解釋器 ,將用戶輸入的命令(符合 Shell 語法)處理成對應 操作系統的控制命令 ,處理完畢后再將結果反饋給用戶。

不同操作系統下面的 Shell 種類眾多,常見的有:

Ken Thompson 的 sh 是第一種 Unix Shell,本教程關注的是 Bash,也就是 Bourne Again Shell,Bash 也是大多數 Linux 系統默認的 Shell。

終端 (Terminal),是一種用來讓用戶輸入數據至計算機,以及顯示其計算結果的機器。早期的終端通常就是一臺 電子打字機 (Teletypewriter, TTY),后來隨著計算機的發展,打字機被鍵盤和顯示器取代,而 GUI 界面也成了主流。

于是,這時候我們就需要一個程序來模擬傳統終端的行為,即 終端模擬器 (Terminal Emulator),當用戶打開終端模擬器時,實際上是進入一個 會話進程 (Session)。終端模擬器有很多,這里舉幾個經典的例子:

在 Linux 系統中打開終端時,會看到一個提示符,通常類似 hewei@hewei-VirtualBox ~$ 。在提示符下,命令會被 Shell 環境 解析并反饋 到終端中。

提示符是 Shell 最主要的 文本接口 。它告訴你,你的主機名是 hewei-VirtualBox ,你現在的身份是 hewei 并且你當前的 工作目錄 (Current working directory)是 ~ (默認在 /home/hewei/ 用戶目錄)。

$ 符號表示您現在的身份不是 root ,輸入如下命令可以暫時切換到 root 權限:

輸入密碼后,可以看到提示符變成了 root@hewei-VirtualBox:/home/hewei# ,其中 # 符號就是超級用戶權限的標志。再輸入 exit 即可退回普通用戶身份。

在 Git學習筆記 #1 基礎知識介紹 中,已經簡單介紹了命令行界面的一些使用技巧,這些命令在 Linux 系統的 Bash 中同樣使用。這里羅列出 Linux 常用快捷鍵:

常見的執行 Linux 命令的格式是這樣的: 命令名稱 [命令參數] [命令對象] 。其中,命令參數用于對命令進行調整,使之更好地貼近需求,參數分為 長格式 和 短格式 ,如: man --help , man -h 。短格式之間可以合并,合并后僅保留一個減號即可。

在 Linux 相關的手冊中,我們會約定俗成地將可選擇的、非必需的參數使用 中括號 引起來,而命令所要求的、必須有的參數或對象值,則不帶中括號。

此外,要注意 Linux 系統中的命令、參數、對象都是 嚴格區分大小寫 的。

Shell 除了是一個 交互式 (Interactive)的命令解釋器,它還是一種 程序設計語言 (Shell Script)。它定義了各種變量和參數,并提供了許多在高級語言中才具有的控制結構,包括循環和分支。

用 Shell 編寫的 腳本文件 即 .sh 文件,它能在 Shell 環境下運行,fork 出一個 子進程 ,調用系統內核來執行 批處理 (Batch)的系統控制。在文件的第一行,通常是 #!/bin/bash ,這句話約定了這個腳本需要哪種 Shell 環境來執行。

通過如下命令就可以執行一個 Shell 腳本:

下面羅列了部分常用指令與參數的介紹,更多功能請在幫助手冊中檢索。

linux查看文件信息命令

ls命令 - list directory contents

顯示文件詳細信息:ls -l file name

file命令 — determine file type

determine file type :file file name

output MIME type strings (--mime-type and --mime-encoding) :file -i file name

stat命令 - display file or file system status

顯示文件狀態信息:stat file name?《Linux就該這么學》一起學習

顯示文件在系統的狀態信息:stat -f file name

簡明顯示文件的狀態信息:stat -t file name

求:linux遠程服務器與本地終端文件傳輸命令

Linux 文件命令精通指南

作者:Sheryl Calish

為剛接觸 Linux 文件命令的初學者提供的速成教程

雖然 GUI 桌面(如 KDE 和 GNOME)能夠幫助用戶利用 Linux 特性,而無需關于命令行接口的功能知識,但還是經常會需要更多的功能和靈活性。而且,基本熟悉這些命令對于在 shell 腳本中正確地使某些功能自動化仍然是必需的。

這篇文章是關于 Linux 文件命令的一個“速成教程”,它是為那些剛接觸這個操作系統或者只是需要補充這方面知識的用戶提供的。它包含了對一些更有用的命令的一個簡明的概述以及關于它們的最強大的應用的指導。下面包含的信息 — 結合一些實驗 — 將使您能夠容易地掌握這些基本的命令。(注意:當涉及到一個與 Oracle 集群文件系統 (OCFS) 結合的內核時,這些命令中的某些命令的行為可能會稍微有所不同。在此情況下,Oracle 提供了一個 OCFS 工具集,該工具集可以為文件命令應用提供一個更好的選擇。)

注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進行了測試。雖然沒有理由相信它們在其它的系統上將不能工作,但如果出現問題,您應當查看您的文檔,以了解可能的變化。

背景概念

在深入研究規范之前,讓我們回顧一些基礎知識。

文件和命令

在 Linux/UNIX 操作系統中,所有事物都被當作文件來處理:硬件設備(包括鍵盤和終端)、目錄、命令本身,當然還有文件。這個奇怪的慣例實際上是 Linux/UNIX 的能力和靈活性的基礎。

大多數(幾乎是全部)的命令形式如下:

command [option] [source file(s)] [target file]

獲取幫助

最有用的命令之一是那些提供幫助的命令(特別是對那些學習 Linux 的人而言)。Linux 中的兩個重要的信息來源是聯機參考手冊,或 man 頁面和 whatis 工具。您可以用 whatis 命令來訪問一個不熟悉的命令的 man 頁面。

$ whatis echo

要了解關于這個命令的更多信息,可以使用:

$ man echo

如果您不知道某個特殊任務所需的命令,您可以用 man -k (也稱為 apropos)和一個主題來生成可能的命令。例如:

$ man -k files

一個很有用但常常被忽視的命令可以提供關于使用 man 本身的信息:

$ man man

您可以用 SPACEBAR 來瀏覽任意的 man 頁面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。

用戶類別

記得那句名言“所有動物一例平等但有些動物比其他動物更加平等”嗎?在 Linux 世界中,根用戶掌管一切。

根用戶可以以另一個用戶名 su (源自 "superuser")登錄。要執行諸如添加一個新用戶、打印機或文件系統之類的任務,必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級用戶。系統文件(包括控制初始化過程的系統文件)歸根用戶所有。雖然可能允許普通用戶對它們進行讀操作,但出于系統安全性的原因,編輯的權利將留給根用戶。

BASH shell

雖然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默認 shell。它結合了與它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。

BASH 內置的命令 history 默認記錄最后輸入的 500 條命令。可以通過在命令提示符下輸入 history 來查看它們。要檢索某個特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在歷史列表中輸入它的編號,并在編號前面加上 "!",例如:

$ !49

您還可以通過一條命令在歷史列表中離位置最靠前的項目的距離來執行該命令:如果在歷史列表中有 53 個事件,$ !-3 將執行事件號 51。

像 UNIX/Linux 世界的其它 shell 一樣,BASH 使用了特殊的環境變量來方便系統管理。例如:

HOME,用戶主目錄

PATH,Linux 用來搜索您輸入的命令的可執行鏡像的搜索路徑

HISTSIZE,系統保存的歷史事件的數量

除了這些保留的關鍵字之外,您還可以定義您自己的環境變量。例如,Oracle 使用 ORACLE_HOME (還有其它一些變量),要使 Oracle 安裝成功完成,必須在您的環境中設置這些變量。

可以在提示符下臨時設置變量:

$HISTSIZE=100

或者,在 /etc/profile (需要根用戶權限)中進行系統范圍的永久設置,或在 .profile 中進行局部永久設置。

可以通過 echo 命令,并用一個 $ 符號來訪問一個環境變量的值,進而查看該值。

$ echo $HOME

/home/bluher

可以用 env 命令來查看當前所有的環境變量。

正則表達式和通配符

許多 Linux 命令使用通配符 * 和 ? 來匹配任意數量的字符或分別匹配任意的單個字符;正則模式匹配表達式利用一個句點 (.) 來匹配除“換行符”之外的任意單個字符。這兩種情況下都使用方括號 ([ ]) 來匹配除“*”號之外的字符組。不過,* 號在各種情況下有類似但不同的意義:雖然它在 shell 中將匹配一個或更多的字符,但在正則表達式中,它匹配上述字符的零個或更多的實例。一些命令(如 egrep 和 awk)使用了一組更廣泛的特殊字符來進行模式匹配。

文件處理命令

剖析一個文件列表

ls 命令用來查看用戶有執行權限的任意目錄中的文件列表,該命令有許多有趣的選項。例如:

$ ls -liah *

22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile

19942 -rw-r--r-- 1 scalish users 30 Jan 3 20:00 test2.out

925 -rwxr-xr-x 1 scalish users 378 Sep 2 2002 test.sh

上面的列表顯示 8 列:

第 1 列指示文件的 inode,因為我們使用了 -i 選項。剩下的列通過 -l 選項來進行正常顯示。

第 2 列顯示文件類型和文件訪問權限。

第3 列顯示鏈接數,包括目錄。

第 4 和第 5 列顯示文件的所有者和組所有者。這里,所有者 "bluher" 屬于組 "users"。

第 6 列顯示文件大小(單位為所顯示的單位,而不是默認的字節數,因為我們使用了 -h 選項。

第 7 列顯示日期(它看起來像是三列),包括月、日和年,以及當天的時間。

第 8 列顯示文件名。在選項列表中使用 -a 將使列表中包含隱藏文件(如 .profile)的列表。

處理文件

可以移動 (mv)、復制 (cp) 或刪除 (rm) 文件和目錄。明智地使用 -i 選項,以獲得確認通常是個不錯的主意。

$ cp -i ls.out ls2.out

cpverwrite `ls2.out'?

mv 命令允許使用 -b 選項,這將在移動文件之前作一個備份拷貝。rm 和 cp 接受功能強大但卻危險的 -r 選項,它將在一個目錄和它的文件上遞歸執行。

$ rm -ir Test

rm:descend into directory `Test'? y

可以用 mkdir 來創建目錄,用 rmdir 來刪除目錄。不過,因為不能用 rmdir 來刪除包含文件的目錄,所以使用 rm 加 -r 選項通常要更方便些。

出于安全的原因,所有的文件都有所有權和保護。文件訪問權限(或文件模式)包含之前提到的相同的 10 個字符:

第一個字符指示文件類型。最常見的是 - 代表文件,d 代表目錄,而 l 代表鏈接。

接下來的 9 個字符是三種用戶類別的訪問權限:文件所有者(字符 2-4),用戶組 (5-7) 和其它 (8-10),其中 r 表示讀權限,w 表示寫權限,x 指示一個文件上的執行權限。破折號 - 如果出現在這九個位置的任意一個,則指示這個操作對該類別的用戶禁止。

可以使用 chmod 命令通過字符符號或二進制掩碼來設置訪問權限。要使用二進制掩碼,必須將三個權限組的字符表示轉換成二進制格式,然后轉換成八進制格式:

用戶類別: 所有者 用戶組 其它

字符表示: rwx r-x r--

二進制表示: 111 101 100

八進制表示: 7 5 4

將寫權限賦予用戶組,您可以使用:

chmod g+w test.sh or chmod 774 test.sh

用 umask 命令,在 /etc/init.dev 文件中進行系統范圍內的、或在 .profile 文件中進行的本地的文件權限默認設置。這個命令指示用 777 減去這個數字來獲取默認的權限:

$ umask 022

這將為用戶創建的所有新文件生成一個默認的文件權限 755。

可以用 chown 來修改文件的所有權:

$ chown bluher ls.out

這里,bluher 是新的文件所有者。類似地,組成員資格將按以下方式修改:

$ chgrp devgrp ls.out

這里,devgrp 是新的用戶組。

ls 不提供哪些文件是文本的,哪些文件是二進制的的信息。要了解這個信息,您可以使用 file * 命令。

重命名文件

賦予一個文件多個名字的兩種流行的方法是利用鏈接和 alias 命令。Alias 可以用來為一個更長的命令重新起一個更方便的名字:

$ alias ll='ls -l'

$ ll

注意單引號的使用,這使得 BASH 將該項目傳遞給別名,而不是自己估計它。別名還可用作較長的路徑名的縮寫:

$ alias jdev9i=/jdev9i/jdev/bin/jdev

關于 alias 和它的反命令 unalias 的更多信息,請查看 BASH 的 man 頁面的 "SHELL BUILTIN COMMANDS" 子部分。在最后一個例子中,定義了一個環境變量來實現相同的結果。

$ export JDEV_HOME=/jdev9i/jdev/bin/jdev

$ echo $JDEV_HOME

/jdev9i/jdev/bin/jdev

$ $JDEV_HOME

鏈接允許幾個文件名引用單個源文件,格式如下:

ln [-s] fileyouwanttolinkto newname

單獨的 ln 命令創建到文件的一個硬鏈接,而使用 -s 選項來創建一個符號鏈接。簡而言之,一個硬鏈接幾乎不能和原始的文件區分開(除了這兩個文件的 inode 將相同之外)。符號鏈接較容易區分,因為它們出現在一個長的文件列表中,并用 -; 來指示源文件,l 指示文件類型。

查看和查找文件

文件過濾器

用來讀取文件內容和在文件內容上執行操作的命令有時被稱為 1濾器。sed 和 awk 命令是兩個濾波器的例子,因為在以前的 OTN 文章中有它們詳細的討論,在這里將略過。

諸如 cat、 more 和 less 之類的命令讓您能夠從命令行查看一個文本文件的內容,而無需調用編輯器。Cat 是 "concatenate" 的縮寫,它將默認地在標準輸出(顯示屏)上顯示文件內容。和 cat 一起提供的最有趣的選項之一是 -n 選項,它用編號的輸出行來顯示文件內容。

$ cat -n test.out

1 This is a test.

因為 cat 一次性輸出文件中的所有行,所以您可能更喜歡用 more 和 less,因為它們都一次輸出一屏的文件內容。Less 是 more 的一個增強的版本,它允許用來自 vi 文本編輯器的關鍵命令來增強文件查看。例如,d 向前翻滾、b 向后翻滾 N 行(如果 N 是在 d 或 b 之前指定的)。為 N 輸入的值成為隨后的 d 命令的默認值。man 頁面實用工具使用 less 來顯示使用說明的內容。

重定向和管道

重定向允許將命令輸出重定向到文件中,而不是標準輸出,或者類似地,也可重定向輸入。重定向的標準符號 ; 創建一個新的文件。;; 符號將輸出添加到一個現有的文件中:

$ more test2.out

Another test.

$ cat test.out ;; test2.out

$ cat test2.out

Another test.

This is a test.

到文件的標準輸入可以用 符號來重定向:

$ cat test2.out

錯誤消息用 2; 和 2;; 來重定向和添加,格式如下:

$ command 2; name_of_error_file

要避免無意地覆蓋一個現有的文件,使用 BASH 內置的命令集:

$ set -o noclobber

可以在命令和輸出文件之間用 ;! 符號來重載這個特性。要關閉這個特性,用 +o 代替 -o。

重定向在一個命令和文件之間、或文件和文件之間工作。重定向語句的一項必須是一個文件。

管道使用 |符號,并且在命令之間工作。例如,您可以用以下方式將一個命令的輸出直接發送到打印機上:

$ ls -l * | lpr

可以用以下方式快速地找到歷史列表中的一個命令:

$ history | grep cat

更多的濾波器

Grep、fgrep 和 egrep 都顯示匹配一種模式的行。所有這三個命令都在文件中搜索指定的模式,如果您想不起來一個所需文件的名稱,這將非常有用。基本格式是:

grep [options] PATTERN [FILE...]

$ grep -r 'Subject' nsmail

CTRL-Z 將終止上述或其它任何命令。

grep 的最有用的選項可能是 -s。如果您以除根用戶之外的任何身份搜索系統文件,那么對于每一個您沒有訪問權限的文件,都將產生錯誤消息。這個命令禁止那些消息。

Fgrep(也以 grep -F 調用)只查找固定的字符串,而不是 grep 接收的正則表達式。而 egrep 接收包含更大范圍的特殊字符(如 “|”,它指示條件 OR 運算符)的模式。

$ egrep 'Subject|mailto' *

查找文件

find 命令的 GNU 版本非常強大、靈活并且比 UNIX 系統上存在的經典版本更具包容性。它對于涉及到目錄結構的任務非常有用,包括在文件上查找和執行命令。find 命令的基本格式是:

$ find startdirectory options matchcriteria [actionoptions]

如果您知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,您可以這么做:

$ find .-name 'test*'

./test

./jdevhome/mywork/EmpWS/EmpBC4J/test

與經典的 UNIX 系統不同,在 Linux 中不需要在末尾添加 -print 操作,因為如果沒有指定其它的操作選項,就將假定執行這個操作。在目錄起始位置上的一個點 ( . ) 將使 find 在您的工作目錄中開始搜索。兩個點, ..,在父目錄中開始搜索。您可以在任意目錄下開始搜索。

注意,您可以使用通配符作為搜索準則的一部分(只要用單引號將整個項目括起來)。

$ find .-name 'test*' -print

./test.out

./test2.out

顯示擁有 .out 擴展名的一系列文件:

$ find /home -name '*.out'

不過記住,除非您是作為超級用戶運行這個命令,否則您將可能得到許多的 "ermission denied" 錯誤消息。

最強大的搜索工具之一是和 grep 一起使用的 -exec 操作:

$ find .-name '*.html' -exec grep 'mailto:foo@yahoo.com' {} \;

.,查找一個 html 文件,*.html,并在當前文件上執行 (-exec) grep 命令,{}。當使用 -exec 操作時,需要一個分號 ;,這是用來在使用 find 命令時執行其它一些操作。需要反斜線 \ 和引號來確保這些項目通過 BASH,以使它們由命令而不是 shell 來進行解釋。

當前名稱:簡明linux命令 linux命令大全詳解
網頁網址:http://vcdvsql.cn/article16/ddopsgg.html

成都網站建設公司_創新互聯,為您提供外貿建站網站排名網站營銷App開發虛擬主機網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設