scp 'ad port ' 22 问题解决
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,在写一个scp推送文件脚本的时候遇到的问题脚本# cat test.sh#!/bin/bashIP=`head -1 hosts.txt|tail -1|awk -F" " '{print $1}'`
千家信息网最后更新 2026年11月01日scp 'ad port ' 22 问题解决
在写一个scp推送文件脚本的时候遇到的问题
脚本
# cat test.sh#!/bin/bashIP=`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执行结果
# sh test.sh /tmp/yum.log'ad port '22lost connection
hosts.txt文件内容
# cat hosts.txt 192.168.0.103 22
原因分析
开启shell调试选项,执行结果如下
# 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:/tmpyum.log'ad port '22lost connection奇怪为什么会PORT=$'22\r',百度$'\r'遇到这种问题还不少,\r是windows的换行符,问题可能出在这里hosts.tx文件是我从windows下写的,而后上传到linux;由于$2是最后一个字段所以$2包含了\r
解决办法
方法一:在hosts.txt文件内容的每一行后添加一个空格
方法二:安装dos2unix
# yum install dos2unix -y...# dos2unix hosts.txt dos2unix: converting file hosts.txt to UNIX format ...
再次执行脚本成功
# 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:/tmpyum.log
文件
问题
脚本
内容
方法
结果
成功
一行
再次
办法
原因
原因分析
字段
换行符
时候
空格
分析
推送
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
互联网科技工作委员会副主任毛军
云信互联网科技有限公司
互联网科技公司的优势
科技互联网公司装修
金诺互联网科技
深圳科技互联网
广州互联网科技公司
西安互联网科技
苏州互联网科技贷款公司
天津摩尔互联网科技
唐信互联网科技 大连
互联网科技小额贷款
亿人帮互联网科技
欧洲十大科技互联网公司
宁夏科技产业互联网案例
互联网科技圈年度人物
广州互联网高科技取餐柜
悟空问答互联网科技
广东猫王互联网科技有限公司电话
互联网络科技
互联网科技工作委员会主任
朗新科技与工业互联网
万易互联网科技
衡水科技产业互联网平台
哈尔滨秒房互联网科技有限公司
知域互联网科技有限公司大骗子
图游互联网科技
广州梦谷互联网科技有限公司领导
株洲百竞科技的互联网营销顾问