##Ctrl+D:在目錄下敲擊該命令,作用是退出當前用戶。
周寧網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、成都響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。
##Ctrl+D:在命令mail、write等命令中敲擊該命令,作用是退出當前命令。
1.write
? ? 語法:write 用戶名
? ? 功能:給用戶發(fā)信息,以Ctrl+D保存結束; 即時通信
2.wall(write all)
語法:wall [message]
功能:發(fā)廣播信息(給所有用戶發(fā)信息); 回車鍵結束命令
3.ping
語法:ping [選項] IP地址
功能:測試網(wǎng)絡連通性
-c 次數(shù):指定發(fā)送次數(shù)
-s 字節(jié):指定探測包的大小
4.ifconfig(interface configure)
語法:ifconfig(或者ifconfig 網(wǎng)卡地址 IP地址 )
功能:查看和設置網(wǎng)卡信息? ? ?
inet6: IPv6地址目前不生效
5.mail
語法:mail [用戶名]
功能:查看或者發(fā)送電子郵件? ?##輸入郵件內容時,刪除鍵為 ctrl+backspace
6.last
語法:last
功能:顯示當前與過去登入系統(tǒng)的用戶信息
7.lastlog
語法:lastlog
功能:顯示所有用戶最后登錄時間
8.traceroute
語法:traceroute [目標主機]
功能:顯示發(fā)出數(shù)據(jù)包的主機到目標主機之間的網(wǎng)關數(shù)量
?## 星號*** 可能是防火墻封掉了ICMP的返回信息,所以得不到數(shù)據(jù)包返回數(shù)據(jù)
9.netstat
語法:netstat [選項]??
功能:顯示網(wǎng)絡相關信息
-a:列出所有網(wǎng)絡狀態(tài),包括Socket程序
-c 秒數(shù):指定每隔幾秒刷新一次網(wǎng)絡狀態(tài)
-n:使用IP地址和端口號顯示,不是用域名和服務名
-p:顯示PID和程序名
-t:顯示使用TCP協(xié)議端口的鏈接狀況
-u:顯示使用UDP協(xié)議端口的鏈接狀況
-l:加顯示監(jiān)聽狀態(tài)的鏈接
-r:顯示路由表
“tuln”選項:查看本機開啟的端口,只能查看監(jiān)聽狀態(tài)的鏈接。
1) Proto:網(wǎng)絡連接的協(xié)議,一般就是 TCP 協(xié)議或者 UDP 協(xié)議。
2) Recv-Q:表示接收到的數(shù)據(jù),已經在本地的緩沖中,但是還沒有被進程取走。
3) Send-Q:表示從本機發(fā)送,對方還沒有收到的數(shù)據(jù),依然在本地的緩沖中,不具備 ACK 標志的數(shù)據(jù)包。
4) Local Address:本機的 IP 地址和端口號。
5) ForeignAddress:遠程主機的 IP 地址和端口號。
6) State:狀態(tài)。常見的狀態(tài)主要有以下幾種。
-LISTEN:監(jiān)聽狀態(tài),只有 TCP 協(xié)議需要監(jiān)聽,而 UDP 協(xié)議不需要監(jiān)聽。
-ESTABLISHED:已經建立連接的狀態(tài)。如果使用"-I"選項,則看不到已經建立連接的狀態(tài)。
-SYN_SENT:SYN 發(fā)起包,就是主動發(fā)起連接的數(shù)據(jù)包。
-SYN_RECV:接收到主動連接的數(shù)據(jù)包。
-FIN_WAIT1:正在中斷的連接。
-FIN_WAIT2:已經中斷的連接,但是正在等待對方主機進行確認。
-TIME_WAIT:連接已經中斷,但是套接字依然在網(wǎng)絡中等待結束。
-CLOSED:套接字沒有被使用。
? ? ? ? 最常用的是LISTEN和ESTABLISHED
10.numtui
語法:numtui
功能:配置網(wǎng)絡——centos7獨有的功能
11.mount
語法:mount [-t 文件系統(tǒng)] 設備文件名 掛載點
功能:掛載外接設備
很多朋友都在想linux如何復制文件到目錄?下面就一起來看看吧!
linux復制文件到目錄
1、首先需要連接相應linux主機,進入到linux命令行狀態(tài)下,等待輸入shell指令。
2、在linux命令行下輸入shell指令:cp-r21/send。
3、鍵盤按“回車鍵”運行shell指令,此時會看到文件夾2被成功復制到文件夾1的send目錄中了。
本文章基于ThinkpadE15品牌、centos7系統(tǒng)撰寫的。
expect:expect是Unix系統(tǒng)中用來進行自動化控制和測試的腳本工具,常用于實現(xiàn)交互式任務的自動化。使用命令”dnf install expect -y”進行安裝。腳本文件聲明為”#!/usr/bin/expect”。
expect常用命令如下:
1.spawn+交互命令(如spawn ssh root@192.168.1.1):”spawn”是expect的初始命令,用于啟動一個新的交互進程,之后所有的操作都會在這個進程中進行。
2.set:定義變量/為變量賦值。使用語法:set 變量名 值。
3.puts:將變量值/字符串定向到本地標準輸出文件(即定位到屏幕)。使用語法:puts “字符串/$變量名”
4.send_user:作用和使用方法類似于”puts”,區(qū)別在于”puts”會在輸出內容的結尾自動追加一個換行符,而”send_user”不會。
5.send:向交互進程發(fā)送信息/命令(字符串和一些特殊符號,\r—回車,\n—換行,\t—制表符)。使用語法:send “信息/命令[\r]”。
6.[lindex $argv 數(shù)字]:表示外部傳遞參數(shù)的值,數(shù)字是n,就表示第n-1個參數(shù)。注:$argc表示外部傳遞參數(shù)的個數(shù),也是一個值。
7.expect+字符串+{ 命令 }:將字符串與交換進程接收到的信息進行匹配。如果匹配成功(字符串是交換進程接收到的信息的一部分),執(zhí)行包含在”{}”中的命令;如果匹配失敗,不執(zhí)行包含在”{}”中的命令。該命令有三種使用方法:
第一種:單分支模式
①expect 字符串 { 命令 }
解釋:如果字符串與交換進程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串與交換進程接收到的信息匹配失敗,timeout秒后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串{ 命令 }
timeout { 命令 }
}
解釋:如果字符串與交換進程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串與交換進程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
第二種:多分支模式
①expect {
字符串1 { 命令 }
字符串2 { 命令 }
}
解釋:如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1與交換進程接收到的信息匹配失敗、字符串2與交換進程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1、字符串2皆與交換進程接收到的信息匹配失敗,timeout秒后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串1 { 命令 }
字符串2 { 命令 }
timeout { 命令 }
}
解釋:如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1與交換進程接收到的信息匹配失敗、字符串2與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1、字符串2皆與交換進程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
第三種:循環(huán)多分支模式(注:exp_continue命令只能出現(xiàn)在expect命令的匹配語句中,執(zhí)行到exp_continue命令時,腳本會跳出當前expect命令,并重新執(zhí)行該expect命令,直到expect命令通過不包含exp_continue命令的匹配語句結束、或expect命令匹配超時結束。)
①expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
}
解釋:如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令;如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令...;如果字符串1與交換進程接收到的信息匹配失敗、字符串2與交換進程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1、字符串2皆與交換進程接收到的信息匹配失敗,timeout秒后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
timeout { 命令 }
}
解釋:如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令;如果字符串1與交換進程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令...;如果字符串1與交換進程接收到的信息匹配失敗、字符串2與交換進程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結束該expect命令;如果字符串1、字符串2皆與交換進程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結束該expect命令。(注:腳本執(zhí)行到expect命令時,計時器就開始計時,并會在計時器超時前不斷對交換進程接收到的信息進行掃描,嘗試字符串與信息的匹配。)
8.timeout:timeout是expect中的一個關鍵字變量,用于控制expect命令的超時時間。需要注意的是,這個超時時間針對于整個expect命令,而不是針對于expect命令中的某條匹配語句。也就是說,只有expect命令中所有匹配語句都匹配失敗后,才會開始計算超時時間。timeout變量值缺省為10(秒),我們可以通過”set timeout=值”的方式為其重新賦值,作用范圍:本次賦值到下一次賦值間的所有expect命令。注:如果需要為timeout變量重新賦值,應在expect命令之外進行。
9.expect eof:該命令的作用是結束spawn交互進程,將命令行切回至運行腳本的主機(即從遠端服務器登出)。
10.interact:缺省情況下,expect腳本執(zhí)行完畢后會自動從遠端服務器登出(即便沒有顯式地執(zhí)行”expect eof”命令)。使用interact命令后,expect腳本執(zhí)行完畢會繼續(xù)保持當前狀態(tài),并將控制權移交給用戶。
11.exit:結束該腳本。
expect中的if語句:
if { 條件表達式 } {
命令
}
if { 條件表達式 } {
命令
} else {
命令
}
expect中的while語句:
while { 條件表達式 } {
命令
}
expect中的for語句:
for { set i 1 } { $i =10 } { incr i } {
命令
}
incr變量名 步長 ??——變量自增
incr 變量名 -步長 ???——變量自減
數(shù)學運算需使用let、expr等工具
send, sendto, sendmsg - send a message on a socket
系統(tǒng)調用 send()、sendto() 和 sendmsg() 用于將消息傳輸?shù)搅硪粋€套接字。
僅當套接字處于連接狀態(tài)時才可以使用 send() 調用(以便知道預期的接收者, 也就是說send()僅僅用于數(shù)據(jù)流類型的數(shù)據(jù)發(fā)送 ,對于TCP,服務端和客戶端都可以使用send/recv;但是對于UDP,只能是客戶端使用send/recv,服務端只能使用sendto/recvfrom,因為客戶端是進行了connect操作知道要發(fā)送和接受的地址)。send() 和 write(2) 之間的唯一區(qū)別是存在 flags 參數(shù)。此外,
send(sockfd, buf, len, flags);
等價于
sendto(sockfd, buf, len, flags, NULL, 0);
參數(shù) sockfd 是發(fā)送者套接字的文件描述符。
如果在連接模式的套接字(即套接字類型為SOCK_STREAM、SOCK_SEQPACKET)上使用 sendto(),則參數(shù) dest_addr 和 addrlen 將被忽略(當它們不是NULL和0時可能返回錯誤EISCONN),若套接字沒有實際連接(還沒有三次握手建立連接)將返回錯誤ENOTCONN。 否則,目標地址由 dest_addr 給出, addrlen 指定其大小。 對于 sendmsg(),目標地址由 msg.msg_name 給出, msg.msg_namelen 指定其大小。
對于 send() 和 sendto(),消息位于 buf 中,長度為 len 。 對于sendmsg(),消息存放于 msg.msg_iov 元素指向 數(shù)組數(shù)據(jù)區(qū) (見下)中。 sendmsg() 調用還允許發(fā)送輔助數(shù)據(jù)(也稱為控制信息) 。
如果消息太長而無法通過底層協(xié)議原子傳遞( too long to pass atomically through the underlying protocol ),則返回錯誤 EMSGSIZE,并且不會傳輸消息。
No indication of failure to deliver is implicit in a send(). Locally detected errors are indicated by a return value of -1.
當消息不適合套接字的發(fā)送緩沖區(qū)時,send() 通常會阻塞,除非套接字已置于非阻塞 I/O 模式。 在這種情況下,在非阻塞模式下它會失敗并顯示錯誤 EAGAIN 或 EWOULDBLOCK。 select(2) 調用可用于確定何時可以發(fā)送更多數(shù)據(jù) 。
上面的的描述還是很籠統(tǒng)的,以TCP為例,按我的理解,我認為只要發(fā)送緩沖區(qū)有空閑位置,且此時協(xié)議棧沒有向網(wǎng)絡發(fā)送數(shù)據(jù),那么就可以寫入,對于阻塞模式,直到所有數(shù)據(jù)寫入到緩沖區(qū),就會返回,否則一直阻塞,對于非阻塞模式,是有一個超時時間的,這個由 SO_SNDTIMEO 選項控制,詳細見 socket(7) ,如果當前有空閑位置可以發(fā)即當前可寫入,那么就寫入到緩沖區(qū),知道超時之前寫入多少算多少,然后返回成功寫入的字節(jié)數(shù),如果超時時任何數(shù)據(jù)都沒寫出去,或者當前就是不可寫入,那么返回-1 ,并設置errno為 EAGAIN 或 EWOULDBLOCK。
The flags argument is the bitwise OR of zero or more of the following flags.
sendmsg() 使用的 msghdr 結構的定義如下:
對于未連接的套接字 msg_name 指定數(shù)據(jù)報的目標地址,它指向一個包含地址的緩沖區(qū); msg_namelen 字段應設置為地址的大小。 對于連接的套接字,這些字段應分別指定為 NULL 和 0。 這里的未連接指的是數(shù)據(jù)報協(xié)議,連接指的是數(shù)據(jù)流協(xié)議
The msg_iov and msg_iovlen fields specify scatter-gather locations, as for writev(2).
msg_iov是一個buffer數(shù)組:
使用 msg_control 和 msg_controllen 成員發(fā)送控制信息(輔助數(shù)據(jù))。 內核可以處理的每個套接字最大控制緩沖區(qū)長度由 /proc/sys/net/core/optmem_max 中的值限制; 見 socket(7) 。 有關在各種套接字域中使用輔助數(shù)據(jù)的更多信息,請參閱 unix(7) 和 ip(7)。
msg_flags 字段被忽略。
成功時,返回成功發(fā)送的字節(jié)數(shù),這個字節(jié)數(shù)并不一定和我們的緩沖區(qū)大小相同 。 出錯時,返回 -1,并設置 errno 以指示錯誤。
這些是套接字層生成的一些標準錯誤。 底層協(xié)議模塊可能會產生和返回額外的錯誤; 請參閱它們各自的手冊頁。
4.4BSD, SVr4, POSIX.1-2001. These interfaces first appeared in 4.2BSD.
POSIX.1-2001 describes only the MSG_OOB and MSG_EOR flags. POSIX.1-2008 adds a specification of MSG_NOSIGNAL. The MSG_CONFIRM flag is a Linux extension.
根據(jù) POSIX.1-2001,msghdr 結構的 msg_controllen 字段應該是 socklen_t 類型,而 msg_iovlen 字段應該是 int 類型,但是 glibc 目前將兩者都視為 size_t。
有關可用于在單個調用中傳輸多個數(shù)據(jù)報的 Linux 特定系統(tǒng)調用的信息,請參閱 sendmmsg(2)。
Linux may return EPIPE instead of ENOTCONN.
getaddrinfo(3) 中顯示了使用 send() 的示例。