#!/bin/bash
#yuan scott yang version 1.0
#use sshpass transfer file or directory to another host
#需要登陸遠端伺服器的linux account 的密碼
password=
$1#需要登陸遠端伺服器的ssh服務寬口
ssh_port=
$2#需要登陸遠端伺服器的linux account 的名稱
linux_account=
$3#需要登陸遠端伺服器的ip位址或fqdn
host_name=
$4#使用ssh登入遠端伺服器,並在$linux_account使用者的 "~/.ssh/known_hosts" 加入當前機器的位址,皮面以後登入該遠端伺服器 還要 進行 金鑰詢問「yes」,「no」
password_verify=
`nohup sshpass -p $password ssh -p $ssh_port $linux_account@$host_name -o stricthostkeychecking=no >/dev/null 2>
&1 &
`$password_verify
if[ $# -eq 4 ];
then
$password_verifyif[
$? -eq 0 ]
;then
echo
"verify password success!"
if[ -d /root/oracle_script ]
then
#使用scp傳遞檔案
nohup sshpass -p $password
scp -p $ssh_port -r /root/oracle_script $linux_account@
$host_name:/home/oracle >/dev/null 2>
&1 &
echo
"the script has transfer success!"
#建立ssh 互信
nohup sshpass -p $password ssh-copy-id -i ~/.ssh/id_rsa.pub -p $ssh_port
$linux_account@
$host_name
>/dev/null 2>
&1 &
#這個休眠對程式很關鍵,主要作用處理ssh互信的時差問題。休眠0.5秒。
sleep 0.5
echo
"the ssh has connect success!"
else
echo
"transfer failed!please connect administrator to upload oracle_script file to servers."
exit
fielse
echo
"verify password failed!"
exit
fielse
echo
"please execute this script. eg: $0 password ssh_port linux_account host_name "
exit 0
fi#這個休眠對程式很關鍵,主要作用處理ssh互信的時差問題。休眠0.5秒。
sleep 0.5
設定 SSH 免密碼登陸 仍提示輸入密碼
1 生成金鑰 在根目錄下 cd 使用者根目錄 執行如下語句 ssh keygen t dsa p f ssh id dsa 以上是兩個單引號。2 將id dsa.pub 公鑰 追加到授權的key中 cat ssh id dsa.pub ssh authorized keys 3 將認證檔案複製到其它...
sshpass非互動SSH的密碼驗證
ssh登陸不能在命令列中指定密碼。sshpass的出現,解決了這一問題。sshpass用於非互動ssh的密碼驗證,一般用在sh指令碼中,無須再次輸入密碼 本機known hosts檔案中有的主機才能生效 它允許你用 p 引數指定明文密碼,然後直接登入遠端伺服器,它支援密碼從命令列 檔案 環境變數中讀...
centos配置ssh免密碼登入後,仍提示輸入密碼
1.生成公鑰和私鑰 2.匯入公鑰到認證檔案,更改許可權 3.測試 shell ssh keygen t dsa p f ssh id dsa 預設在 ssh目錄生成兩個檔案 id rsa 私鑰 id rsa.pub 公鑰 2.1 匯入本機 shell cat ssh id rsa.pub ssh a...