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

正文內(nèi)容

大學(xué)計(jì)算機(jī)專(zhuān)業(yè)-一種遠(yuǎn)程管理linux系統(tǒng)工具的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)與實(shí)現(xiàn)-文庫(kù)吧在線(xiàn)文庫(kù)

  

【正文】 ops:/bin/bash 存儲(chǔ)中每個(gè)字段都用 “ : ” 隔開(kāi)的, 第一字段:用戶(hù)名(也被稱(chēng)為登錄名),在上面的例子中,我們看到用戶(hù)的用戶(hù)名是 terrycheops; 第二字段:口令,在例子中我們看到的是一個(gè) x,其實(shí)密碼已被映射到 /etc/shadow 文件中 ; 第三字段:用戶(hù)的 ID; 第四字段:用戶(hù)組的 ID;第五字段:用戶(hù)名全稱(chēng),可選 項(xiàng); 第六字段:用戶(hù)的家目錄所在位置, 該 用戶(hù) 的 是 /home/terrycheops。 服務(wù)器程序 功能 是 接收客戶(hù)程序的數(shù)據(jù),并且通過(guò)收到的數(shù)據(jù) 來(lái) 完成 系統(tǒng)或 應(yīng)用 服務(wù)程序文件的 配置。 (7)send()函數(shù) 當(dāng)連接建立了后自然就需要數(shù)據(jù)的傳送和接收, send()函數(shù)是用來(lái)想連接的另外一端發(fā)送數(shù)據(jù)。 (5) accept 函數(shù) int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)。 當(dāng)函數(shù)調(diào)用成功的時(shí)候返回 0,出錯(cuò)就返回 1。 圖 1 網(wǎng)絡(luò)示意圖 簡(jiǎn)單的 網(wǎng)絡(luò) 編程 (1) socket 函數(shù) socket 函數(shù)功能是創(chuàng)建一個(gè) 套接口描述符,并且指定希望的通信協(xié)議 (使用 IPV4 的 TCP,或者使用 IPV6 的 UPD 等 )。 系統(tǒng)調(diào)用wait(amp。 參數(shù)是打開(kāi)的文件描述符號(hào) 。 第 1個(gè)參數(shù)是打開(kāi)的文件描述符,第 2個(gè)參數(shù)是存儲(chǔ)文件數(shù)據(jù)的內(nèi)存 地址 ,第 3 個(gè)參數(shù)是讀取數(shù)據(jù)大小。 也就是說(shuō)通過(guò)一個(gè)單一的接口就可以處理外圍設(shè)備和程序 之間 的通信。 GtkCList構(gòu) 件是從容器構(gòu)件 GtkContainer派生的,它有容器所具有的一些信號(hào),還有下面這些附加信號(hào): select_row:選中一行時(shí)引發(fā),該信號(hào)傳遞 信息,依次是 GtkCList *clist、gint row、 gint column、 GtkEventButton *event。 創(chuàng)建 GtkClist構(gòu)件的方法和創(chuàng)建其他構(gòu)件的方法類(lèi)似 。 GtkWidget *gtk_notebook_new( void )。 第一參數(shù)是前面創(chuàng)建的標(biāo)簽構(gòu)件 (用 GTK_LABEL()宏轉(zhuǎn)換 ), 第二個(gè)參數(shù)是新字符串。插入時(shí)可以指定文本的背景色、前景色和字體。 按鈕 創(chuàng)建以后就可以用上面所講述的 GTK信號(hào)和 回調(diào)函數(shù) 或事件機(jī)制來(lái)實(shí)現(xiàn) , 當(dāng)按扭按下或有其他操作時(shí)候的 回調(diào)函數(shù) 來(lái)響應(yīng)相應(yīng)的函數(shù)或事件。 GtkTable(表格構(gòu)件 )是很常用的用于定位的構(gòu)件。 但是 它 只 可以容納 一個(gè) 子構(gòu)件 , 所以要讓 GtkWindow能容納更多的構(gòu)件必須使用布局控件來(lái)布局。 將回調(diào)函數(shù)與一個(gè)事件連接起來(lái),需要使用以下形式的函數(shù): gtk_signal_connect( GTK_OBJECT(button), button_press_event GTK_SIGNAL_FUNC(button_press_callback), NULL) 。 這由類(lèi)似以下所示的函數(shù)實(shí)現(xiàn): Gint gtk_signal_connect(GtkObject *object, Gchar *name, GtkSignalFunc func, gpointer func_data )。 gtk_main()函數(shù)的所有功能都是監(jiān)視 Gtk 程序和與 X 服務(wù)的連接,對(duì)同樣的時(shí)間隊(duì)列起作用 。 本課題的研究方法 本課題主要是對(duì)網(wǎng)絡(luò) 配置 、 GTK 庫(kù)、 Linux 系統(tǒng)調(diào)用和網(wǎng)絡(luò)編程方面 的 研究。 但是現(xiàn)在能夠統(tǒng)一對(duì)這些服務(wù)進(jìn)行管理的軟件卻很少的。GTK。 一種遠(yuǎn)程管理 Linux 系統(tǒng)工具的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 現(xiàn)在 ,Linux 已經(jīng)是應(yīng)用 比較 廣泛的操作系統(tǒng)之一 , 在其系統(tǒng)中有很多的服務(wù)。C/C++。 1 引言 課題背景 Li nux 是目前應(yīng)用最廣泛的操作系統(tǒng)之一 ,基于 Linux 系統(tǒng)的 網(wǎng)絡(luò)服務(wù)軟件 (如 FTP、 Apache、 DNS、 SendMail)的功能也很 強(qiáng)大 。 通過(guò)該課題的設(shè)計(jì)和實(shí)現(xiàn),既解決遠(yuǎn)程管理 Linux 系統(tǒng) ,又 讓自己 掌握 了 一些 Linux 系統(tǒng)編程 和 Sock 編程能力。 Gtk 分別用 gtk_main()函數(shù)和 gtk_main_quit()函數(shù)來(lái)運(yùn)行主循環(huán)和退出主循環(huán) , 當(dāng)系統(tǒng)調(diào)用了 gtk_main()函數(shù)后, 由于 gtk_main()函數(shù)可以遞歸調(diào)用 ,所以 需 要調(diào)用 gtk_main_quit()函數(shù)才能 退出 gtk。要讓一個(gè)按鈕執(zhí)行一個(gè)操作,我們需要 寫(xiě)一 段信號(hào)處理程序,以捕獲它的信號(hào),然后調(diào)用相應(yīng)的 回調(diào)函數(shù) 。要想知道哪一個(gè)事件已經(jīng)引發(fā),可以查看類(lèi)型參數(shù),因?yàn)槊總€(gè)可能的可選事件都有一個(gè)反映引發(fā)事件的類(lèi)型參數(shù)。 ( 1) GtkWindow 構(gòu)件 GtkWindow構(gòu)件是最大的容器 , 它實(shí)際就是一個(gè)窗體構(gòu)件。GtkTable構(gòu)件可以讓構(gòu)件在一個(gè)表格上根據(jù)單元格定位 。 可以用 gtk_button_new_with_label()創(chuàng)建帶標(biāo)題的按鈕 。 為了在當(dāng)前插入點(diǎn)插入文本,可以使用 gtk_text_insert函數(shù)。創(chuàng)建標(biāo)簽構(gòu)件后,要改變標(biāo)簽內(nèi)的文本,用以下函數(shù): void gtk_label_set_text( GtkLabel *lacbel,char *str )。用下面的函數(shù)可以創(chuàng)建新筆記本構(gòu)件。每一列都可以有一個(gè)標(biāo)題,而且可以是活動(dòng)的, 還可以將函數(shù)綁定到列選擇上。 與其他構(gòu)件一樣, GtkCList有一些信號(hào)供我們使用。 3 Linux 系統(tǒng)調(diào)用 Linux 系統(tǒng)文件 在 Linux 中最主要的資源就是文件 , 很多設(shè)備都是以文件形式 存在的 , 所以大多數(shù) 輸入 /輸出都要通過(guò)文件讀寫(xiě)來(lái)實(shí)現(xiàn)。 ? Linux 系統(tǒng) 讀取文件內(nèi)容通過(guò)系統(tǒng)調(diào)用 read()函數(shù)來(lái)實(shí)現(xiàn),函數(shù)原形 : ssize_t numread = read(int fd,void *buff,size_t qty)。 這個(gè)系統(tǒng)調(diào)用會(huì)關(guān)閉進(jìn)程和文件之間的連接。 在使用 fork()函數(shù)創(chuàng)建進(jìn)程的時(shí)候經(jīng)常 父進(jìn)程等待子進(jìn)程 結(jié)束。如果客戶(hù)和服務(wù)器處于同一 以太網(wǎng), 如圖 1所示 。 sockfd 是有 socket 函數(shù)返回的一個(gè)套接口描述符,第 2 個(gè)和第 3 個(gè)參數(shù)分別是一個(gè)指向套接口地址結(jié)構(gòu)指針和結(jié)構(gòu)的大小。 本函數(shù)通常都是在調(diào)用 socket 和 bind 這兩個(gè)函數(shù)之后。 int close(int sockfd)。采用 GTK 編寫(xiě) 界面, 采用 Sock 編程實(shí)現(xiàn) 通信 。 dnsconfig vsftpcon group_control() InitAction () Net_DNS_Config () Apache_Config () Ftp_Config () sysconfig apachecon group 程序入口 sock() bind() listen() accep() t() 一直阻塞到客戶(hù)連接到達(dá) 連接建立 TCP3 次握手 init_cli () user recv () 對(duì)字符 判斷 exit close () user_control() 字符串 判斷處理 圖 4 用戶(hù)操作流程 對(duì) 用戶(hù)的操作是添加、刪除和修改用戶(hù), Linux 用戶(hù)都 是記錄在把 temp 的數(shù)據(jù)fputs()到文件 退出用戶(hù)操作到圖 3 的 recv() exit adduser scauser property fclose() fopen() 把 temp 中的數(shù)據(jù) fputs()到文件中 fputs(str) fopen() 是 否 否 是 把 temp 中的數(shù)據(jù) fputs()到文件中 把讀取數(shù)據(jù)存到 2 維數(shù)組 temp中 把 str存到 2維數(shù)組 temp 中 fclose() fopen() 相同 接收的字符和讀取字符 不同 否 為空 把讀取數(shù)據(jù)存到 2 維數(shù)組temp 中 fopen() fget() 為空 fopen() 把接受的數(shù)據(jù)格式化存儲(chǔ)在字符串 str 中 fclose() 把接受的數(shù)據(jù)格式化存儲(chǔ)在字符串 str 中 fopen() fget() user_control() recv() 字符 recv() recv() recv() fopen() fget() send() fget() 為空 相同 把讀取數(shù)據(jù)存到 2 維數(shù)組temp 中 接收的字符和讀取字符 不同 /etc/passwd 文件 中, 對(duì)用戶(hù)添加、刪除和修改都是 通過(guò)修改 /etc/passwd 文件來(lái)實(shí)現(xiàn)。 用 C中流的操作打開(kāi)文件 /etc/passwd,判斷讀取的數(shù)據(jù), 當(dāng)要?jiǎng)h除的用戶(hù)名和 讀取的用戶(hù)名 一致 時(shí) 就不把這個(gè)用戶(hù) 信息 復(fù)制到 二維 數(shù)組 (temp); 讀取用戶(hù)名和 刪除用戶(hù)名不一樣就把讀取數(shù)據(jù) 復(fù)制到 temp 中 。 etc/group 文件是用戶(hù)組的配置文件,內(nèi)容包括用戶(hù)和用戶(hù)組,并且能顯示出 用戶(hù)是歸屬哪個(gè)用戶(hù)組或哪幾個(gè)用戶(hù)組,因?yàn)橐粋€(gè)用戶(hù)可以歸屬一個(gè)或多個(gè)不同的用戶(hù)組;同一用戶(hù)組的用戶(hù)之間具有相似的特征。然后打開(kāi)/etc/group 文 件,讀取文件的數(shù)據(jù),當(dāng)讀取的數(shù)據(jù)和發(fā)送過(guò)來(lái)的組名一樣,就把 str 復(fù)制到 temp 中 , 其它都把讀取的數(shù)據(jù)復(fù)制到 temp 中,關(guān)閉打開(kāi)的文件。判斷 字符串的 第 1 個(gè)字符, 如果 是 1 的話(huà)就調(diào)用系統(tǒng)調(diào)用 link()把/etc/; 如果字符是 0就調(diào)用 unlink()取消 /etc/。 進(jìn)入該模塊后,服務(wù)程序會(huì)接收一個(gè)客戶(hù)程序發(fā)送的數(shù)據(jù),該數(shù)據(jù)用來(lái)控制 DNS 模塊的流程 , 其流程如圖 7所示 。 Apache 服務(wù)停止、啟動(dòng)和重啟操作是通過(guò) exec 調(diào)用 Apache 停止、啟動(dòng)和重啟的 shell 腳本來(lái)完成的。然后在讀取環(huán)境變量,然后向客戶(hù)程序發(fā)送操作結(jié)果。 在模塊劃分方面。命令行中傳遞過(guò)來(lái)的任何參數(shù),只要是它能識(shí)別的,都會(huì)從列表中刪除,并且修改 argc和 argv的值,就像這些參數(shù)從不存在一樣,然后應(yīng)用程序分析剩余的參數(shù)。 mainWin = gtk_window_new(GTK_WINDOW_TOPLEVEL)。 gtk_table_set_row_spacing(GTK_TABLE(table),1,10)。 gtk_table_attach_defaults((GtkTable*)table,exitButt,0,2,2,3)。 gtk_widget_show(exitButt)。這里就不詳細(xì)介紹了。 text = gtk_entry_get_text((GtkEntry *)textbox)。 圖 11 主界面的大概流程圖 主窗體 有 各 個(gè)功能模塊的操作頁(yè)面, 程序主界面如圖 12 所示 。讓服務(wù)器端通過(guò)傳遞過(guò)來(lái)的數(shù)據(jù)實(shí)現(xiàn) 添加用戶(hù)。 再 接收服務(wù)程序發(fā)送過(guò)來(lái)的操作結(jié)果,顯示給用戶(hù)。 (2) 用戶(hù)組的操作:具有某種共同特征的用戶(hù)集合起來(lái)就是用戶(hù)組( Group)。 刪除組:刪除組的操作大概過(guò)程和刪除用戶(hù)相似,也是在選 中 了要?jiǎng)h除 的組后,調(diào)用 group_selection_call_back()函數(shù),來(lái)把組的組名等信息存儲(chǔ)在一個(gè)全局變量中。組的操作的界面如圖 17所示 。 圖 16 用戶(hù)屬性界面 OK 按鈕所觸發(fā)的事件是 先 向 服務(wù)器發(fā)送一個(gè)“ property”字符串,然后 讀取文本框中的數(shù)據(jù),把這些數(shù)據(jù)一起發(fā)送給 服 務(wù)程序 。 圖 15 添加用戶(hù)返回 刪除用戶(hù): 選種了 列表中的 要 刪除的用戶(hù) ,這個(gè)時(shí)候程序會(huì)調(diào)用selection_call_back()函數(shù)。 圖 13 用戶(hù)操作界面 添加用戶(hù):當(dāng)用戶(hù)按了添加 用戶(hù)按鈕后,就調(diào)用了 User_Add()函數(shù)對(duì)這個(gè)事件來(lái)響應(yīng)。 mainform(sock)。不成功就返回到連接界面。 gtk_widget_show(table)。 gtk_signal_connect(GTK_OBJECT(mainWin), destroy, NULL, NULL)。 text = gtk_entry_get_text((GtkEntry *)textbox)。 main() gtk_init() CForm() 按下連接按鈕 sock() connect() 連接建立 TCP3 次握手 連接成功 否 是 主界面 clloButt = gtk_button_new_with_label(connect)。 void CForm(int
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1