shell 使用用户名,秘钥登录到linux

来源:互联网 发布:保障网络和信息安全 编辑:程序博客网 时间:2024/06/06 09:07

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
}
原创粉丝点击