溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

scp 'ad port ' 22 問題解決

發(fā)布時(shí)間:2020-06-20 03:46:19 來源:網(wǎng)絡(luò) 閱讀:589 作者:子雨影 欄目:系統(tǒng)運(yùn)維

在寫一個(gè)scp推送文件腳本的時(shí)候遇到的問題

腳本

# cat test.sh
#!/bin/bash
IP=`head -1 hosts.txt|tail -1|awk -F" " '{print $1}'`
PORT=`head -1 hosts.txt|tail -1|awk -F" " '{print $2}'`
scp -P ${PORT} -r $1 ${IP}:/tmp

執(zhí)行結(jié)果  

# sh test.sh /tmp/yum.log
'ad port '22
lost connection

hosts.txt文件內(nèi)容

# cat hosts.txt 
192.168.0.103 22

原因分析

開啟shell調(diào)試選項(xiàng),執(zhí)行結(jié)果如下

# sh -x test.sh /tmp/yum.log
++ awk '-F ' '{print $1}'
++ tail -1
++ head -1 hosts.txt
+ IP=192.168.0.103
++ awk '-F ' '{print $2}'
++ tail -1
++ head -1 hosts.txt
+ PORT=$'22\r'
+ scp -P $'22\r' -r /tmp/yum.log 192.168.0.103:/tmp
yum.log
'ad port '22
lost connection

奇怪為什么會PORT=$'22\r',百度$'\r'遇到這種問題還不少,\r是windows的換行符,問題可能出在這里hosts.tx文件是我從windows下寫的,而后上傳到linux;由于$2是最后一個(gè)字段所以$2包含了\r


解決辦法

方法一:在hosts.txt文件內(nèi)容的每一行后添加一個(gè)空格

方法二:安裝dos2unix

# yum install dos2unix -y
...
# dos2unix hosts.txt 
dos2unix: converting file hosts.txt to UNIX format ...

再次執(zhí)行腳本成功

# sh -x test.sh /tmp/yum.log 
++ awk '-F ' '{print $1}'
++ tail -1
++ head -1 hosts.txt
+ IP=192.168.0.103
++ awk '-F ' '{print $2}'
++ tail -1
++ head -1 hosts.txt
+ PORT=22
+ scp -P 22 -r /tmp/yum.log 192.168.0.103:/tmp
yum.log


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI