freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一種遠(yuǎn)程管理linux系統(tǒng)工具的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)計(jì)算機(jī)(參考版)

2024-12-10 01:34本頁面
  

【正文】 刷新組:當(dāng)刷新按鈕被按下了后就調(diào)用 group_fresh_button_click ()函數(shù)。通過服務(wù)器程序來刪除服務(wù)器端的組。 刪除組:刪除組的操作大概過程和刪除用戶相似,也是在選中了要?jiǎng)h除的組后,調(diào)用group_selection_call_back()函數(shù),來 把組的組名等信息存儲(chǔ)在一個(gè)全局變量中。然后再把從組添加組界面得到的數(shù)據(jù)發(fā)送到服務(wù)程序。組的操作的界面如圖 17 所示。和上面用 戶的操作過程大概相同,當(dāng)組頁面建立好了后,馬上就從客戶端創(chuàng)建的臨時(shí)文件中讀取服務(wù)器當(dāng)前的組狀態(tài)。 (2) 用戶組的操作:具有某種共同特征的用戶集合起來就是用戶組( Group)。 刷新按鈕所觸發(fā)的事件是:調(diào)用 UserScan()函數(shù)。 第 26 頁 共 33 頁 圖 16 用戶屬性界面 OK按鈕所觸發(fā)的事件是先向服務(wù)器發(fā)送一個(gè)“ property”字符串,然后讀取文本框中的數(shù)據(jù),把這些數(shù)據(jù)一起發(fā)送給服務(wù)程序。圖 14中的 Porperty被點(diǎn)擊了后,創(chuàng)建一個(gè)臨時(shí)的窗體,用來顯示當(dāng)前所選中的用戶屬性。再接收服務(wù)程序發(fā)送過來的操作結(jié)果,顯示給用戶。刪除按鈕后被按下了后,就調(diào)用 User_Del()函數(shù)。 圖 15 添加用戶返回 刪 除 用 戶 : 選 種 了 列 表 中 的 要 刪 除 的 用 戶 , 這 個(gè) 時(shí) 候 程 序 會(huì) 調(diào) 用selection_call_back()函數(shù)。在把結(jié)果顯示給用戶。讓服務(wù)器端通過傳遞過來的數(shù)據(jù)實(shí)現(xiàn)添加用戶。其界面如圖 14所示。 圖 13 用戶操作界面 添加用戶:當(dāng)用戶按了添加用戶按鈕后,就調(diào)用了 User_Add()函數(shù)對這個(gè)事件來響應(yīng)。在用戶操作方面我們主要實(shí)現(xiàn)的是對用戶的添加,刪除和修改。 第 24 頁 共 33 頁 圖 11 主界面的大概流程圖 主窗體有各個(gè)功能模塊的操作頁面,程序主界面如圖 12 所示。 } ? 主界面 當(dāng)用戶端和服務(wù)器端連接成功后,就進(jìn)入主窗體流程了,在主窗體建立前要接收一些從服務(wù)程序發(fā)送過來的數(shù)據(jù),然后把這些數(shù)據(jù)存放到一些臨時(shí)文件里面,等待具體創(chuàng)建 窗體的時(shí)候調(diào)用這些數(shù)據(jù)來初始化界面。 mainform(sock)。 if(*sock 0){return 。 text = gtk_entry_get_text((GtkEntry *)textbox)。 char *text = NULL。不成功就返回到連接界面。 這個(gè)函數(shù)主要是用來綁定 X事件,也就是當(dāng) 用戶按下了連接按鈕后調(diào)用 CollFunc()這個(gè)函數(shù)。這里就不詳細(xì)介紹了。 } 上面函數(shù)大概反映了 GTK變成中常用的構(gòu)件和函數(shù)。 第 23 頁 共 33 頁 gtk_widget_show(table)。 gtk_widget_show(clloLabl)。 gtk_widget_show(exitButt)。 gtk_signal_connect_object(GTK_OBJECT(exitButt), clicked,GTK_SI GNAL_FUNC(Destroy), GTK_OBJECT(mainWin))。 gtk_signal_connect(GTK_OBJECT(mainWin), destroy, NULL, NULL)。 gtk_container_add (GTK_CONTAINER (mainWin), table)。 gtk_table_attach_defaults((GtkTable*)table,exitButt,0,2,2,3)。 gtk_table_attach_defaults((GtkTable*)table,textbox,1,2,0,1)。 text = gtk_entry_get_text((GtkEntry *)textbox)。 gtk_table_set_col_spacing(GTK_TABLE(table),1,35)。 gtk_table_set_row_spacing(GTK_TABLE(table),1,10)。 textbox = gtk_entry_new()。 main() gtk_init() CForm() 按下連接按鈕 sock() connect() 連接建立 TCP3 次握手 連接成功 否 是 主界面 第 22 頁 共 33 頁 clloButt = gtk_button_new_with_label(connect)。 gtk_window_set_default_size((GtkWindow*)mainWin,80,90)。 mainWin = gtk_window_new(GTK_WINDOW_TOPLEVEL)。 int level。 void CForm(int *sock) { GtkWidget *exitButt,*clloButt,*clloLabl。這個(gè)函數(shù)主要功能是創(chuàng)建連接界面,并且當(dāng)用戶在文本框中輸入了服務(wù)器 IP地址后,把文本框中的 IP傳遞給后面的函數(shù),實(shí)現(xiàn)與服務(wù)器網(wǎng)絡(luò)連接。命令行中傳遞過來的任何參數(shù),只要是它能識(shí)別的,都會(huì)從列表中刪除,并且修改 argc和 argv的值,就像這些參數(shù)從不存在一樣,然后應(yīng)用程序分析剩余的參數(shù)。 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 服務(wù)停止操作 字符 Net_DNS_Config () recv() restart refresh saveconfig start 服務(wù)啟動(dòng)操作 服務(wù)重啟操作 發(fā)送配置文件內(nèi)容 修改配置文件的操作 stop 第 21 頁 共 33 頁 圖 10 連接界面的流程圖 程序從 main()進(jìn)入以后就調(diào)用 gtk_init()函數(shù)。除了用 GTK編寫界面以外還要用到 SOCK編程來進(jìn)行和服務(wù)器端的 TCP連接的建立。 程序設(shè)計(jì) 客戶程序一共有兩個(gè)窗體,連接窗體和主窗體。 在模塊劃分 方面。把用戶操作后的結(jié)果通過 SOCK來傳達(dá)給服務(wù)器程序。 在用戶界面方面,采用 GTK編程來建立用戶界面,把實(shí)現(xiàn)的功能接口通過界面的方式提供給用戶,讓用戶來進(jìn)行相關(guān)的操作。 修改配置文件操作,先是接收 客戶程序發(fā)送過來的數(shù)據(jù) (要修改的內(nèi)容 ),找到要修改數(shù)據(jù)的位置,把收到的數(shù)據(jù)寫入到文件中。然后在讀取環(huán)境變量,然后向客戶程序發(fā)送操作結(jié)果。其流程如圖 9所示。 查看錯(cuò)誤日志操作,讀取錯(cuò)誤 日志中的數(shù)據(jù),在把數(shù)據(jù)發(fā)送到客戶程序。 發(fā)送配置文件內(nèi)容操作是讀取 Apache配置文件的內(nèi)容,然后把讀取的內(nèi)容發(fā)送到客戶程序。 Apache服務(wù)停止、啟動(dòng)和重啟操作是通過 exec調(diào)用 Apache停止、啟動(dòng)和重啟的 shell腳本來完成的。 刪除 domain 操作先接收客戶程序發(fā)送的數(shù)據(jù) (要?jiǎng)h除的 domain,和 zone),然后判斷/var/named/chroot/etc/ zone存在,如果沒有就發(fā)送“ zone name is not exist”到客戶程序,如果有就得到其數(shù)據(jù)文件名字,然后在數(shù)據(jù)文件中查看是否有 domain存在,如果沒有就發(fā)送“ Domain name is not exist”到客戶程序,如果有就刪除 domain部分,然后發(fā)送“ Domain del succseed”到客戶程序。 添加 domian操作先接收客戶程序發(fā)送過來的數(shù)據(jù) (要添加的 domain名, IP和 zone名 ),然后判斷 /var/named/chroot/etc/ zone存在,沒有就發(fā)送“ zone name is not exist”到客戶程序,如果有就得到其數(shù)據(jù)文件名字。 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 字符 Net_DNS_Config () recv() addzone delzonel addtozone delinzone 刪除domain操作 添加zone 操作 刪除zone 操作 刪除domain操作 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 第 18 頁 共 33 頁 刪除 zone操作先接收客戶程序發(fā)送過來的數(shù)據(jù) (要?jiǎng)h除的 zone名 ),判斷配置文件中是否有發(fā)送過來 zone名存在,如果沒有就向客戶發(fā)送“ zone name is not exist”字符串;如果有就讀取配置文件的數(shù)據(jù)到內(nèi)存 (buff)中 ,再把 buff 內(nèi)存中的數(shù)據(jù)刪除要?jiǎng)h除的部分,然后再把 buff中的數(shù)據(jù)寫入到配置文件 中。進(jìn)入該模塊后,服務(wù)程序會(huì)接收一個(gè)客戶程序發(fā)送的數(shù)據(jù),該數(shù)據(jù)用來控制 DNS模塊的流程,其流程如圖 7所示。 (4) DNS管理操作 圖 3的程序流程到 Net_DNS_Config()函數(shù)就進(jìn) 入 DNS功能模塊了。最后再判斷第 5 個(gè)字符,是 1 就把文件/etc/。然后判斷第 3個(gè)字符,是 1 就 調(diào)用 系統(tǒng) linnk()函數(shù)把 /etc/,是 0就取消對 /etc/。判斷字符串的第 1個(gè)字符,如果是 1 的話就調(diào)用系統(tǒng)調(diào)用 link()把 /etc/InitAction () recv () 第 1 個(gè)字符 1 0 link(“ /etc/”, “ /etc/” ) unlink(“ /etc/ed” ) 第 2 個(gè)字符 1 0 link(“ /etc/”,“ /etc/” ) unlink(“ /etc/pd” ) 第 3 個(gè)字符 1 0 link(“ /etc/”, /etc/” ) unlink(“ /etc/S80sendmail” ) 第 4 個(gè)字符 1 0 link(“ /etc/”, “ /etc/” ) unlink(“ /etc/S65dhcpd” ) 第 5 個(gè)字符 1 0 link(“ /etc/”, “ /etc/” ) unlink(“ /etc/S91smb” ) 退出系統(tǒng)啟動(dòng)服務(wù)管理到圖 3 的recv() 第 17 頁 共 33 頁 /etc/; 如 果 字 符 是 0 就 調(diào) 用 unlink() 取消/etc/。其流程如圖 6所示。 用戶組操作的流程如圖 5所示。 瀏覽組的過程,當(dāng)程序到了瀏覽組的流程后,打開 /etc/group文件,把文件的數(shù)據(jù)讀取到 buff中,再關(guān)閉文件,把 buff的數(shù)據(jù)發(fā)送的到客戶程序。然后打開 /etc/group文件,讀取文件的數(shù)據(jù),當(dāng)讀取的數(shù)據(jù)和發(fā)送過來的組名一樣,就把 str復(fù)制到 temp中,其它都把讀取的數(shù)據(jù)復(fù)制到 temp中,關(guān)閉打開的文件。再次打開文件 /etc/group,把 temp的數(shù)據(jù)都寫到文件中,關(guān)閉文件,這樣就完成組的刪除操作。在打開文件 /etc/group把 temp的數(shù)據(jù)寫到文件中去,最后把 str寫入到文件中,關(guān)閉文件,這樣就實(shí)現(xiàn)了組的添加。 進(jìn)入到組添加流程后,接收客戶端發(fā)送過來要添加的組的信息,然后把接收的數(shù)據(jù)格 第 14 頁 共 33 頁 式按照 /etc/group存儲(chǔ)格式格式化后復(fù)制到 str中。 etc/group 文件是用戶組的配置文件,內(nèi)容包括用戶和用戶組,并且能顯示出用戶是歸屬哪個(gè)用戶組或哪幾個(gè)用戶組,因?yàn)橐粋€(gè)用戶可以歸屬一個(gè)或多個(gè)不同的用 戶組;同一用戶組的用戶之間具有相似的特征。重新以寫文件的操作打開文件 /etc/passwd,然后把二維數(shù)組 (temp)中的數(shù)據(jù)以流的形式再寫入到文件 /etc/passwd中, 這樣就完成了修改用戶的操作 當(dāng)進(jìn)入瀏覽用戶的流程后,打開 /etc/passwd文件,把文件的數(shù)據(jù)讀取到 buff中,再關(guān)閉文件,把 buff的數(shù)據(jù)發(fā)送的到客戶程序,讓客戶程序顯示當(dāng)前的用戶信息。以 C語言中流的操作打開并且讀取文件 /etc/passwd的數(shù)據(jù) ,判斷讀取的數(shù)據(jù),當(dāng)要修改的用戶名和讀取的用戶名一致時(shí)把 str數(shù)據(jù)復(fù)制到二維數(shù)組 (temp);讀取用戶名和修改的用戶名不一致時(shí)就把讀取數(shù)據(jù)復(fù)制到 temp中。重新以寫文件的操作打開文件 /etc/passwd,然后把二維數(shù)組 (temp)中的數(shù)據(jù)的以流的 形式在寫入到文件 /etc/passwd中,這樣就實(shí)現(xiàn)了用戶的刪除。用 C中流的操作打開文件 /etc/passwd,判斷讀取的數(shù)據(jù),當(dāng)要?jiǎng)h除的用戶名和讀取的用戶名一致時(shí)就不把這個(gè)用戶信息復(fù)制到二維數(shù)組 (temp);讀取用戶名和刪除用戶名不一樣就把讀取數(shù)據(jù)復(fù)制到 temp中。再以寫的形式打開文件,然后把上面二維數(shù)組 (temp)的內(nèi)容寫到文件中,最后再把變
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1