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 远端机,可以看到不需要密码就可以登陆了
一:采用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 远端机,可以看到不需要密码就可以登陆了
相关文章推荐
- jenkins结合shell实现登录远程主机执行shell脚本
- shell脚本实现同时多台远程主机执行命令的代码分享
- shell远程登录执行脚本
- 利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集
- 【Linux学习笔记】Linux主机如何实现无需输入密码的远程登录或脚本远程执行
- Java通过SSH2协议执行远程Shell脚本
- linux 远程执行 shell脚本中nohup启动注意
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- Java SSH远程执行Shell脚本实现
- Java通过SSH2协议执行远程Shell脚本
- 用python脚本执行ssh远程登录多台机器
- Java SSH远程执行Shell脚本实现(转)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- Java SSH远程执行Shell脚本实现(转)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- 不用拷贝脚本到远程主机,也能在远程主机上执行脚本
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令