單次任務(wù)
[單次任務(wù)]
(http://www.reibang.com/p/066f6aa07898
)
atd 服務(wù)負(fù)責(zé)管理單次任務(wù)
我們使用 at 這個(gè)指令來產(chǎn)生所要運(yùn)行的工作,并將這個(gè)工作以文本文件的方式寫入 /var/spool/at/ 目錄內(nèi),該工作便能等待 atd 這個(gè)服務(wù)的取用與執(zhí)行了
實(shí)際上有兩個(gè)權(quán)限控制文件,規(guī)定了哪些用戶可以使用甜孤,哪些用戶不可以使用
規(guī)則是這樣的:
一行一個(gè)用戶
首先查看 /etc/at.allow 文件肉瓦。
假如系統(tǒng)中存在此文件援雇,就只允許在此文件的用戶使用 at, 其他都拒絕虱歪。
假如沒有 /etc/at.allow 文件,就看有沒有 /etc/at.deny 文件搓逾。
這個(gè)文件意義就是,允許所有杯拐,拒絕部分霞篡。
就是在這個(gè)文件中的用戶是被拒絕的,不在此文件中的用戶是被允許的端逼。
默認(rèn)CentOS7系統(tǒng)是有一個(gè)空的 /etc/at.deny 文件朗兵。
意思是允許所有人使用 at 命令的意思
進(jìn)行單次任務(wù)的程序是 at 命令, 管理他的服務(wù)是 atd
systemctl restart atd
systemctl enable atd
systemctl status atd
具體命令操作
[root@study ~]# at [-mldv] TIME
[root@study ~]# at -c 工作號(hào)碼
選項(xiàng)與參數(shù):
-m :當(dāng) at 的工作完成后,即使沒有輸出訊息顶滩,亦以 email 通知使用者該工作已完成余掖。
-l :at -l 相當(dāng)于 `atq` 命令,列出目前系統(tǒng)上面的所有該使用者的 at 調(diào)度礁鲁;
-d :at -d 相當(dāng)于 `atrm` 命令 浊吏,可以取消一個(gè)在 `at` 調(diào)度中的工作;
-v :可以使用較明顯的時(shí)間格式列出 at 調(diào)度中的工作列表救氯;
-c :可以列出后面接的該項(xiàng)工作的實(shí)際指令內(nèi)容找田。
TIME:
時(shí)間格式,可以定義出『什么時(shí)候要進(jìn)行 at 這項(xiàng)工作』的時(shí)間.
格式有:
HH:MM 如: 04:00
在今日的 HH:MM 進(jìn)行着憨,若時(shí)間已過墩衙,則在明天的 HH:MM 進(jìn)行行此工作。
HH:MM YYYY-MM-DD 如: 04:00 2019-07-28
強(qiáng)制在某年某月的某一天的特殊時(shí)刻進(jìn)行該工作甲抖!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
如:
now + 5 minutes
和
04pm + 3 days
就是說漆改,在某個(gè)時(shí)間點(diǎn)『再加上幾個(gè)時(shí)間后』才進(jìn)行。
示例
[root@kvm-docker ~]# at now + 5 minutes
at> echo "hello" > /dev/pts/0
at> <EOT>
job 1 at Sat Jul 27 18:49:00 2019
ctrl + backspace進(jìn)行刪除操作
ctrl + d 退出編輯
查詢:
[root@kvm-docker ~]# atq
1 Sat Jul 27 18:49:00 2019 a root
周期性的任務(wù)
循環(huán)執(zhí)行的例行性工作調(diào)度則是由 cron (crond) 這個(gè)系統(tǒng)服務(wù)來控制的准谚。
默認(rèn)情況下挫剑,每個(gè)用戶都可以通過 crontab 管理自己的計(jì)劃任務(wù)。
和 at 一樣柱衔,有兩個(gè)文件控制權(quán)限:
/etc/cron.allow
/etc/cron.deny
使用
crontab -l 查詢?nèi)蝿?wù)表
crontab -r 刪除任務(wù)表
crontab -e 進(jìn)入編輯任務(wù)表
crontab -eu 用戶名 給某個(gè)用戶設(shè)定一個(gè)任務(wù)
關(guān)于時(shí)間
參考: cat /etc/crontab
代表意義 分鐘 小時(shí) 日期 月份 周 指令
數(shù)字范圍 0-59 0-23 1-31 1-12 0-7 命令
周的數(shù)字為 0 或 7 時(shí)樊破,都代表“星期天”的意思愉棱!
總結(jié)記憶:
分 時(shí) 日 月 星
周的數(shù)字為 0 或 7 時(shí),都代表“星期天”的意思哲戚!
總結(jié)記憶:
分 時(shí) 日 月 星
除了數(shù)字還有幾個(gè)個(gè)特殊的符號(hào):
就是 *奔滑、/ 和 -、, 顺少,
*代表所有的取值范圍內(nèi)的數(shù)字
/ 代表每的意思,*/5 表示每5個(gè)單位
- 代表從某個(gè)數(shù)字到某個(gè)數(shù)字
, 代表分隔時(shí)段的意思朋其,就是 和 的意思
以下舉幾個(gè)例子說明:
每天早上6點(diǎn):
0 6 * * * command
每?jī)蓚€(gè)小時(shí):
0 */2 * * * command
23 點(diǎn)到早上7點(diǎn)之間每?jī)蓚€(gè)小時(shí), 并且還有早上8點(diǎn):
0 23-7/2,8 * * * command
每個(gè)月的 4 號(hào)的早上11點(diǎn)和每周的周一到周三的早上11點(diǎn):
0 11 4 * 1-3 command
1月1日早上2點(diǎn) 30 分:
30 2 1 1 * command
注意
1.不要在統(tǒng)一時(shí)間段執(zhí)行多個(gè)計(jì)劃任務(wù)
2.將命令的錯(cuò)誤輸出重定向
*/1 * * * * /bin/echo "hello" 2> /dev/null //2表示錯(cuò)誤輸出,并放到“回收站”脆炎,1的話就表示正確輸出
3.周與日月不可同時(shí)并存
網(wǎng)絡(luò)基礎(chǔ)配置
配置本機(jī) IP 和主機(jī)名
系統(tǒng)網(wǎng)卡的配置文件在 /etc/sysconfig/network-scripts 目錄下
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet 網(wǎng)絡(luò)類型梅猿,不需要編輯
BOOTPROTO=none 獲取地址的方式,可選值 none 表示手動(dòng)配置 , dhcp 表示從 DHCP 服務(wù)器自動(dòng)獲取
IPADDR=192.168.1.52 本機(jī)的IP 地址
PREFIX=24 子網(wǎng)掩碼前綴的方式秒裕,24 表示 255.255.255.0
NETMASK =255.255.255.0 子網(wǎng)掩碼
GATEWAY=192.168.1.1 網(wǎng)關(guān)
DNS1=114.114.114.114 手動(dòng)配置的 DNS 地址
DEFROUTE=yes
PEERDNS=no 使用這里設(shè)置的 DNS
ONBOOT=yes 是否開機(jī)激活這個(gè)網(wǎng)卡袱蚓,假如不激活,重啟網(wǎng)絡(luò)服務(wù)也是無效的簇爆。
配置好后癞松,需要重啟網(wǎng)絡(luò)服務(wù)才能生效
systemctl restart network # 字符界面下
備用的相關(guān)網(wǎng)絡(luò)配置
/etc/resolve.conf
配置主機(jī)名
文件 /etc/hostname
命令行設(shè)置主機(jī)名
hostnamectl set-hostname sharkhost
獲取主機(jī)名
hostname
或者
hostnamectl
配置本機(jī)解析主機(jī)名
文件路徑 /etc/hosts
配置好自己或者別人的ip 加名字,然后直接ping 那個(gè)名字就行
網(wǎng)絡(luò)基礎(chǔ)配置命令
IP
iproute 軟件包 提供 ip 命令
給網(wǎng)卡接口配置 IP 地址入蛆,一個(gè)網(wǎng)卡可以配置多個(gè) ip
ip addr add 192.168.0.193/24 dev enp0s3
刪除一個(gè)網(wǎng)卡接口上的一個(gè) IP 地址
ip addr del 192.168.0.193/24 dev enp0s3
查看指定網(wǎng)卡接口上的 IP 地址
ip addr show enp0s3
查看一個(gè) ip 的路由路徑
~ ip route get 220.181.111.188
百度的ip 從 本機(jī)的 網(wǎng)關(guān)IP 本機(jī)的設(shè)備 到 本機(jī)的 ip
220.181.111.188 via 172.16.153.2 dev bond0 src 172.16.153.129
cache
查看本機(jī)的路由表
ip route show
default via 10.0.122.1 dev enp0s3 proto static metric 100
默認(rèn)路由 網(wǎng)關(guān)的 ip 本機(jī)設(shè)備 enp0s3 路由協(xié)議 靜態(tài)的
10.0.122.0/24 dev enp0s3 proto kernel scope link src 10.0.122.133 metric 100
目標(biāo)網(wǎng)絡(luò)號(hào) 本機(jī)設(shè)備 enp0s3 內(nèi)核轉(zhuǎn)發(fā) 源地址是 10.0.122.133
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.193
網(wǎng)卡上有的網(wǎng)絡(luò)响蓉,內(nèi)核都會(huì)自動(dòng)有一條路由
設(shè)置默認(rèn)路由
添加
ip route add default via 10.0.122.1 dev enp0s3
刪除
ip route del default via 10.0.122.1 dev enp0s3
使用 ip 命令的 neigh 選項(xiàng),你可以查看接入本機(jī)所在的局域網(wǎng)的其他設(shè)備的MAC地址
~ ip neigh
10.0.122.1 dev enp0s3 lladdr f0:98:38:3f:49:23 STALE
10.0.122.124 dev enp0s3 lladdr 84:2b:2b:1a:8e:80 REACHABLE
10.0.122.143 dev enp0s3 lladdr 28:d2:44:06:46:6f STALE
10.0.122.166 dev enp0s3 lladdr 00:0e:c6:d6:4c:83 REACHABLE
查看本機(jī)監(jiān)聽的端口
ss -l 顯示本地打開的所有處于 LISTEN 監(jiān)聽狀態(tài)的端口
ss -pl 顯示每個(gè)進(jìn)程具體打開的socket
ss -t -a 顯示所有tcp socket
ss -u -a 顯示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的SMTP連接
ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接
ss -x src /tmp/.X11-unix/* 找出所有連接X服務(wù)器的進(jìn)程
ss -s 列出當(dāng)前socket詳細(xì)信息
ss -n 監(jiān)聽端口用數(shù)字表示
sshd 服務(wù)
[sshd服務(wù)]
(http://www.reibang.com/p/85a956108421)
配置文件 /etc/ssh/sshd_config
加速 SSH 的連接
GSSAPIAuthentication no
登錄的基本操作
以密碼認(rèn)證方式登錄到遠(yuǎn)程服務(wù)器(ssh 服務(wù)端)
場(chǎng)景1:
ssh 客戶端使用 root 用戶連接到 ssh 服務(wù)端哨毁,假設(shè)服務(wù)端 ip 為 10.0.122.133
先決條件:
服務(wù)端有 root 用戶
服務(wù)端開啟了 sshd 服務(wù)枫甲,默認(rèn)監(jiān)聽端口 22
客戶端有個(gè) ssh 客戶端工具
1.首先在 客戶端為當(dāng)前的用戶創(chuàng)建密鑰對(duì)
ssh-keygen
此時(shí),當(dāng)前用戶的家目錄的 .ssh 目錄下就會(huì)有密鑰對(duì)
id_rsa 私鑰
id_rsa.pub 公鑰
公鑰用于非密碼認(rèn)證方式時(shí)扼褪,傳送給對(duì)方想幻,作為信任的憑證。
私鑰會(huì)報(bào)存到本地
2.以 服務(wù)端的用戶 root 連接到 服務(wù)端
ssh root@服務(wù)端ip
或者
ssh root@服務(wù)端主機(jī)名
這里服務(wù)端的主機(jī)名必須可以被客戶端主機(jī)正確解析
假如第一次連接會(huì)得到一個(gè)提示话浇。
大致的意思是脏毯,要不要信任 ssh 服務(wù)端的公鑰。信任輸入 yes幔崖。
此時(shí)食店,客戶端會(huì)把 服務(wù)端的 公鑰存放在當(dāng)前用戶家目錄下的 .ssh/known_hosts
文件中,一行一個(gè)主機(jī)赏寇。
3.輸入密碼即可
端口登陸
去掉注釋#就可以執(zhí)行
重啟服務(wù)
systemctl restart sshd
檢查監(jiān)聽端口
客戶端連接
ssh -p 22 root@10.0.122.102
以公鑰的方式認(rèn)證方式登錄到遠(yuǎn)程服務(wù)器(ssh 服務(wù)端)
客戶端需要發(fā)送自己的公鑰給服務(wù)端吉嫩,服務(wù)端接收后會(huì)保存在用戶家目錄中的 .ssh/authorized_keys 文件中
ssh-copy-id root@10.0.122.102
ssh-copy-id 服務(wù)端用戶@服務(wù)端ip
登錄驗(yàn)證
ssh root@10.0.122.102
scp 傳輸文件
scp 是基于 ssh 協(xié)議的,可以實(shí)現(xiàn)客戶端和服務(wù)端的文件傳輸
拷貝客戶端到服務(wù)端
下面是把客戶端的當(dāng)前目錄下的文件 local_file.txt 傳輸?shù)椒?wù)端的 /tmp/ 目錄下嗅定,文件名不變
scp local_file.txt root@10.0.122.133:/tmp/
假如指定端口
scp -P 2222 local_file.txt root@10.0.122.133:/tmp/
拷貝服務(wù)端文件到客戶端
下面的命令是把服務(wù)端的文件 /tmp/local_file.txt 傳輸?shù)娇蛻舳说漠?dāng)前操作命令的目錄下
scp root@10.0.122.133:/tmp/local_file.txt .
假如指定端口
scp -P 2222 root@10.0.122.133:/tmp/local_file.txt .
常用配置參數(shù)
1\. SSH Server 的設(shè)置自娩,包含使用的 port 啦,以及使用的密碼演算方式
Port 22
# SSH 默認(rèn)監(jiān)聽 22 這個(gè)port渠退,也可以使用多個(gè)port忙迁,即重複使用 port 這個(gè)設(shè)定項(xiàng)目脐彩!
# 例如想要開放 sshd 在 22 與 443 ,則多加一行內(nèi)容為:『 Port 443 』
# 然後重新啟動(dòng) sshd 這樣就好了动漾!不過丁屎,不建議修改 port number 啦荠锭!
Protocol 2
# 選擇的 SSH 協(xié)定版本旱眯,可以是 1 也可以是 2 ,CentOS 5.x 預(yù)設(shè)是僅支援 V2。
# 如果想要支援舊版 V1 ,就得要使用『 Protocol 2,1 』才行央渣。
ListenAddress 0.0.0.0
# 監(jiān)聽的主機(jī)介面卡饲嗽!舉個(gè)例子來說,如果你有兩個(gè) IP颗祝,分別是 192.168.1.100 及 192.168.100.254,假設(shè)你只想要讓 192.168.1.100 可以監(jiān)聽 sshd ,那就這樣寫:
# 『 ListenAddress 192.168.1.100 』預(yù)設(shè)值是監(jiān)聽所有介面的 SSH 要求
PidFile /var/run/sshd.pid
# 可以放置 SSHD 這個(gè) PID 的檔案蓬蝶!上述為預(yù)設(shè)值
LoginGraceTime 2m
# 當(dāng)使用者連上 SSH server 之後,會(huì)出現(xiàn)輸入密碼的畫面猜惋,在該畫面中丸氛,
# 在多久時(shí)間內(nèi)沒有成功連上 SSH server 就強(qiáng)迫斷線!若無單位則預(yù)設(shè)時(shí)間為秒著摔!
Compression delayed
# 指定何時(shí)開始使用壓縮資料模式進(jìn)行傳輸缓窜。有 yes, no 與登入後才將資料壓縮 (delayed)
2\. 說明主機(jī)的 Private Key 放置的檔案,預(yù)設(shè)使用下面的檔案即可谍咆!
HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私鑰
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰
# 還記得我們?cè)谥鳈C(jī)的 SSH 連線流程裡面談到的禾锤,這裡就是 Host Key ~
3\. 關(guān)於登錄檔的訊息資料放置與 daemon 的名稱!
SyslogFacility AUTHPRIV
# 當(dāng)有人使用 SSH 登入系統(tǒng)的時(shí)候摹察,SSH 會(huì)記錄資訊恩掷,這個(gè)資訊要記錄在什麼 daemon name
# 底下?預(yù)設(shè)是以 AUTH 來設(shè)定的供嚎,即是 /var/log/secure 裡面黄娘!什麼?忘記了查坪!
# 回到 [Linux 基礎(chǔ)](http://linux.vbird.org/linux_basic/)去翻一下寸宏。其他可用的 daemon name 為:
DAEMON,USER,AUTH, LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,
LogLevel INFO
# 登錄記錄的等級(jí)!嘿嘿偿曙!任何訊息氮凝!同樣的,忘記了就回去參考望忆!
4\. 安全設(shè)定項(xiàng)目罩阵!極重要竿秆!
4.1 登入設(shè)定部分
PermitRootLogin yes
# 是否允許 root 登入!預(yù)設(shè)是允許的稿壁,但是建議設(shè)定成 no幽钢!
StrictModes yes
# 是否讓 sshd 去檢查使用者家目錄或相關(guān)檔案的權(quán)限資料,
# 這是為了擔(dān)心使用者將某些重要檔案的權(quán)限設(shè)錯(cuò)傅是,可能會(huì)導(dǎo)致一些問題所致匪燕。
# 例如使用者的 ~.ssh/ 權(quán)限設(shè)錯(cuò)時(shí),某些特殊情況下會(huì)不許用戶登入
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 是否允許用戶自行使用成對(duì)的金鑰系統(tǒng)進(jìn)行登入行為喧笔,僅針對(duì) version 2帽驯。
# 至於自製的公鑰資料就放置於使用者家目錄下的 .ssh/authorized_keys 內(nèi)
PasswordAuthentication yes
# 密碼驗(yàn)證當(dāng)然是需要的!所以這裡寫 yes 囉书闸!
PermitEmptyPasswords no
# 若上面那一項(xiàng)如果設(shè)定為 yes 的話尼变,這一項(xiàng)就最好設(shè)定為 no ,
# 這個(gè)項(xiàng)目在是否允許以空的密碼登入浆劲!當(dāng)然不許嫌术!
4.2 認(rèn)證部分
RhostsAuthentication no
# 本機(jī)系統(tǒng)不使用 .rhosts,因?yàn)閮H使用 .rhosts太不安全了牌借,所以這裡一定要設(shè)定為 no
IgnoreRhosts yes
# 是否取消使用 ~/.ssh/.rhosts 來做為認(rèn)證度气!當(dāng)然是!
RhostsRSAAuthentication no #
# 這個(gè)選項(xiàng)是專門給 version 1 用的走哺,使用 rhosts 檔案在 /etc/hosts.equiv
# 配合 RSA 演算方式來進(jìn)行認(rèn)證蚯嫌!不要使用啊丙躏!
HostbasedAuthentication no
# 這個(gè)項(xiàng)目與上面的項(xiàng)目類似择示,不過是給 version 2 使用的!
IgnoreUserKnownHosts no
# 是否忽略家目錄內(nèi)的 ~/.ssh/known_hosts 這個(gè)檔案所記錄的主機(jī)內(nèi)容晒旅?
# 當(dāng)然不要忽略栅盲,所以這裡就是 no 啦!
ChallengeResponseAuthentication no
# 允許任何的密碼認(rèn)證废恋!所以谈秫,任何 login.conf 規(guī)定的認(rèn)證方式,均可適用鱼鼓!
# 但目前我們比較喜歡使用 PAM 模組幫忙管理認(rèn)證拟烫,因此這個(gè)選項(xiàng)可以設(shè)定為 no 喔!
UsePAM yes
# 利用 PAM 管理使用者認(rèn)證有很多好處迄本,可以記錄與管理硕淑。
# 所以這裡我們建議你使用 UsePAM 且 ChallengeResponseAuthentication 設(shè)定為 no
4.3 與 Kerberos 有關(guān)的參數(shù)設(shè)定!因?yàn)槲覀儧]有 Kerberos 主機(jī),所以底下不用設(shè)定置媳!
KerberosAuthentication no
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
KerberosTgtPassing no
4.4 底下是有關(guān)在 X-Window 底下使用的相關(guān)設(shè)定于樟!
X11Forwarding yes
#X11DisplayOffset 10
# X11UseLocalhost yes
# 比較重要的是 X11Forwarding 項(xiàng)目,他可以讓視窗的資料透過 ssh 通道來傳送喔拇囊!
4.5 登入後的項(xiàng)目:
PrintMotd yes
# 登入後是否顯示出一些資訊呢迂曲?例如上次登入的時(shí)間、地點(diǎn)等等寥袭,預(yù)設(shè)是 yes
# 亦即是列印出 /etc/motd 這個(gè)檔案的內(nèi)容路捧。但是,如果為了安全纠永,可以考慮改為 no 鬓长!
PrintLastLog yes
# 顯示上次登入的資訊谒拴!可以俺⒔!預(yù)設(shè)也是 yes 英上!
TCPKeepAlive yes
# 當(dāng)達(dá)成連線後炭序,伺服器會(huì)一直傳送 TCP 封包給用戶端藉以判斷對(duì)方式否一直存在連線。
# 不過苍日,如果連線時(shí)中間的路由器暫時(shí)停止服務(wù)幾秒鐘惭聂,也會(huì)讓連線中斷喔!
# 在這個(gè)情況下相恃,任何一端死掉後辜纲,SSH可以立刻知道!而不會(huì)有僵屍程序的發(fā)生拦耐!
# 但如果你的網(wǎng)路或路由器常常不穩(wěn)定耕腾,那麼可以設(shè)定為 no 的啦!
UsePrivilegeSeparation yes
# 是否使用權(quán)限較低的程序來提供使用者操作杀糯。我們知道 sshd 啟動(dòng)在 port 22 扫俺,
# 因此啟動(dòng)的程序是屬於 root 的身份。那麼當(dāng) student 登入後固翰,這個(gè)設(shè)定值
# 會(huì)讓 sshd 產(chǎn)生一個(gè)屬於 sutdent 的 sshd 程序來使用狼纬,對(duì)系統(tǒng)較安全
MaxStartups 10
# 同時(shí)允許幾個(gè)尚未登入的連線畫面?當(dāng)我們連上 SSH 骂际,但是尚未輸入密碼時(shí)疗琉,
# 這個(gè)時(shí)候就是我們所謂的連線畫面啦!在這個(gè)連線畫面中歉铝,為了保護(hù)主機(jī)盈简,
# 所以需要設(shè)定最大值,預(yù)設(shè)最多十個(gè)連線畫面,而已經(jīng)建立連線的不計(jì)算在這十個(gè)當(dāng)中
4.6 關(guān)於使用者抵擋的設(shè)定項(xiàng)目:
DenyUsers *
# 設(shè)定受抵擋的使用者名稱送火,如果是全部的使用者拳话,那就是全部擋吧!
# 若是部分使用者种吸,可以將該帳號(hào)填入弃衍!例如下列!
DenyUsers test
DenyGroups test
# 與 DenyUsers 相同坚俗!僅抵擋幾個(gè)群組而已镜盯!
5\. 關(guān)於 SFTP 服務(wù)與其他的設(shè)定項(xiàng)目!
Subsystem sftp /usr/lib/ssh/sftp-server
UseDNS yes
# 一般來說猖败,為了要判斷用戶端來源是正常合法的速缆,因此會(huì)使用 DNS 去反查用戶端的主機(jī)名
# 不過如果是在內(nèi)網(wǎng)互連,這項(xiàng)目設(shè)定為 no 會(huì)連接建立的速度比較快恩闻。
寫一個(gè)腳本實(shí)現(xiàn)免密登陸
auto_keygen (){
/usr/bin/expect<<EOF
set timeout 30
spawn ssh-keygen
expect {
".ssh/id_rsa)" { send "\n"; exp_continue }
"Overwrite (y/n)?" { send "y\n"; exp_continue }
"no passphrase):" { send "\n"; exp_continue }
"again:" { send "\n"; exp_continue }
}
EOF
}
# 寫個(gè)自動(dòng)免密登錄的函數(shù)
send_key () {
/usr/bin/expect <<EOF
# 發(fā)送公鑰給對(duì)方服務(wù)器
spawn ssh rourou@$ip
expect {
"yes/no" { send "yes\n"; exp_continue }
"password:" { send "${pwds}\n"; exp_continue} }
EOF
}
# 定義一個(gè)變量艺糜,其值是當(dāng)前用戶的公鑰文件
pub_key_file=$HOME/.ssh/id_rsa.pub
# 假如公鑰文件不存在,說明需要?jiǎng)?chuàng)建密鑰對(duì)
#if [ ! -f ${pub_key_file} ];then
# auto_keygen
#fi
# 循環(huán)一個(gè)存放 ip 地址的文件幢尚,并且把每個(gè) IP地址傳遞給 函數(shù)
for ip in $(cat ./ips.txt)
do
send_key $ip
done
for pwds in $(cat ./pwd.txt)
do
send_key $pwds
done
send_key
需要建立 ip.txt 和 pwd.txt 兩個(gè)文件來記錄IP和密碼