linux用户名密码登录需要在linux系统上安装expect,否则登录过程中需要手动输入yes
scp:远程拷贝文件命令
ssh:远程执行命令
#!/bin/bash
PWD="password"USR="LINUX"
SSH_C_TMOUT=5
SSH_SHK_CHK=no
function fooExpect() {
local _cmd=s1
if [-z "${_cmd}"]; then
echo "Command is empty, return."
return -1
fi
/user/bin/expect>dev/null<<-EOF
log_file ../log/expect_tmp.log/expect_tmp
spawn ${_cmd}
expect {
"*(yes/no)?"{
send_user "yes\n"
send "yes\n"
exp_comtinue
}
"*assword:"{
send_user "${PWD}";
send "${PWD}\n";
exp_comtinue
}
}
EPF
local_rtn=`grep^\/../log/expect_tmp.log`
echo "${_rtn}"
>../log/expect_emp.log
}
#远程拷贝文件
function scpsnd() {
local _ip=$1
local _ipath=$2
local _rpath==$3
local _username==$4
local id_rsa="/path"
nullcheck "${_ip}" "Target ip address is empry"
nullcheck "${_ipath}" "xxxx"
nullcheck "${_rpath}" "xxxx"
nullcheck "${_username}" "xxxx"
#密码登录
#fooExpect "scp -r -C -o ConnectTimeout=${SSH_C_TMOUT} StrictHostKeyChecking=${SSH_SHK_CHK} ${_ipath} ${username}@${_ip}:${_rpath}/"
#秘钥登录
"scp -i @{id_rsa} -r -C -o ConnectTimeout=${SSH_C_TMOUT} -o StrictHostKeyChecking=${SSH_SHK_CHK} ${_ipath} ${username}@${_ip}:${_rpath}"
}
#远程执行文件
function sshcall() {
local _ip=$1
local _cmd=$2
local _username=$3
local id_rsa="/path"
nullcheck "${_ip}" "Target ip address is empry"
nullcheck "${_cmd}" "xxxx"
# 远程执行生成文件test: ssh -f -n -i /home/id_rsa.key ConnectTimeout=5 -o StrictHostKeyChecking=no root@192.168.20.20 "mkdir -rf /home/test"
ssh -f -n -i @{id_rsa} ConnectTimeout=${SSH_C_TMOUT} -o StrictHostKeyChecking=${SSH_SHK_CHK} ${_username}@${_ip} "${_cmd}"
}
function nullcheck() {
if [-z "$1"]; then
echo "$2, exit"
exit 1
fi
}