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

正文內容

一種遠程管理linux系統(tǒng)工具的設計與實現—免費(參考版)

2024-12-11 09:59本頁面
  

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