您的位置:首页 > 运维架构 > Shell

shell scripts登录远程主机执行远程脚本

2015-02-28 16:19 435 查看
记录两种方法:

一:采用expec进行交互式进行,需要输入密码

二:采用public keys 和 private keys,并将public keys传到要访问的远端计算机,使其信任操作:

方法一:

log=test.log

for N in 4 16 64 256 1024 4096 16384

do

#test data prepare

file_total_size=`expr $N \* 1024 \* 50`

echo $N

if [ $N -eq 4 ]; then

echo "for 4K"

sysbench --test=fileio --file-num=50 --file-block-size=4096 --file-total-size=$file_total_size cleanup >>$log 2>&1

sysbench --test=fileio --file-num=50 --file-block-size=4096 --file-total-size=$file_total_size prepare >>$log 2>&1

else

echo "for other"

sysbench --test=fileio --file-num=50 --file-total-size=$file_total_size cleanup >>$log 2>&1

sysbench --test=fileio --file-num=50 --file-total-size=$file_total_size prepare >>$log 2>&1

fi

#add starting remote object server shell here

#start shell script at 145 server

expect <<!

spawn ssh root@1.2.3.6

expect "*? "

send "yes\r"

expect "*password: "

send "123\r"

expect "#"

send "cd sysbench_data;sh /home/osd24/sysbench/sysbench_data/script.sh &\r"

send "exit\r"

expect EOF

!

#start shell script at 146 server

expect <<!

spawn ssh root@1.2.3.6

expect "*? "

send "yes\r"

expect "*password: "

send "123\r"

expect "#"

send "cd sysbench_data;sh /home/osd24/sysbench/sysbench_data/script.sh &\r"

send "exit\r"

expect EOF

!

#start shell script at 147 server

expect <<!

spawn ssh root@1.2.3.6

expect "*? "

send "yes\r"

expect "*password: "

send "123\r"

expect "#"

send "cd sysbench_data;sh /home/osd24/sysbench/sysbench_data/script.sh &\r"

send "exit\r"

expect EOF

!

done

#!/usr/bin/expect

set pw pawword

spawn ssh osd@1.2.3.6

expect "*password: "

send "123\r"

expect "#"

send "exit\r"

expect EOF

expect <<!

spawn ssh osd@1.2.3.6

expect "*password: "

send "123\r"

expect "#"

send "exit\r"

expect EOF

!

expec脚本运行不能用sh方式,只能是./expect脚本名

---------------------------------------------------------------------------------------------------------------------------------------------------------------

SSH是不能实现的,试试expect

#!/usr/bin/expect

spawn /usr/bin/ssh root@10.99.0.245

expect "*password:"

send "123456\r"

expect "*]#"

send "cd /root"

expect "*]#"

send "exit\r"

expect eof

expect <<!

spawn ssh osd24@1.2.3.4

expect "*? "

send "yes\r"

expect "*password: "

send "123\r"

expect "#"

send "cd sysbench_data;sh /home/osd24/sysbench/sysbench_data/script.sh &\r"

send "exit\r"

expect EOF

!

----------------------------------------------------------------------------------------------------------------------------------------------------

方法二:

利用public keys 和 private keys,并将public keys传到要访问的远端计算机,使其信任操作:

1。在本机执行 ssh-keygen -t dsa 然后一路回车,就会生成在该账户的home 即 /home/username/.ssh/id_dsa 和 /home/username/.ssh/id_dsa.pub 这;两个文件

2。在远端需要访问的机器上复制一份 本机生成的 id_dsa.pub 文件,路径是 /home/username。

3。并在远端机上将 id_dsa.pub文件加入到 authorized_keys文件,即 cd /home/username

; cat id_dsa.pub >> .ssh/authorized_keys

4。测试,在本机执行 ssh 远端机,可以看到不需要密码就可以登陆了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: