来自:https://github.com/jiangxianli/SSHAutoLogin
1、ssh_login.sh
2、给ssh_login.sh文件执行的权限
3、配置服务器脚本文件 【软连接】
4、命令使用
服务器登录
选择序列号:1、2、3 .......
5、删除服务器脚本文件 【软连接】
ln参数释义
1.命令格式:
ln [参数][源文件或目录][目标文件或目录]
2.命令参数:
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串>”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息
在实际运用中在当前服务器执行命令后,需要在另一台服务器继续执行某些命令,分开去到另一台服务器执行也是比较麻烦的,因此整理下集中执行的方式
1、首先配置ssh免密操作
Linux 下实现SSH互信: https://www.jianshu.com/p/2456d98aa607
2、简单命令
ssh root@192.168.1.1 "cd /var/liblscd "
2.1 使用时注意,双引号必须有。若没加双引号,第二条及之后的命令会在本地执行
2.2 分号是将两条语句间隔开
2.3 单双引的区别:单引号不会解析值,是什么就传什么;双引号会解析值,将解析结果传过去
3、多条命令
ssh root@192.168.1.1<<reallssh
cd /var/lib/test
tar -zxvf api.com.tar.gz
......
exit
reallssh
3.1 命令写在 << reallssh(开始) 至 reallssh(结束) 之间
3.2 reallssh可自己定义为其他形式
3.3 在结束前加上exit退出远程
4、可能遇到的问题
问题:远程登录主机时出现Pseudo-terminal will not be allocated because stdin is not a terminal. 错误
解决方案:字面意思是伪终端将无法分配,因为标准输入不是终端。
所以需要增加-t -t参数来强制伪终端分配,即使标准输入不是终端。
to force pseudo-tty allocation even if stdin isn’t a terminal.
参考样例如下:
ssh -t -t user1@192.168.1.1 -p 22
--------------------------------------------------------------------------------
参考:https://blog.csdn.net/jinking01/article/details/84386769
大致思路是要用到expect工具,我理解aix上执行的一段命令是要放到后台
#!/bin/bash/usr/bin/expect <<END
spawn telnet IP #IP是AIX的地址
expect "*login:"
send "user\r" #user是登录用户
expect "*assword:"
send "pass\r" #pass是用户登录口令
expect "*#" #我假设是root登录,其shell提示符以#结尾
send "command >/tmp/a.txt &\r" #command是要后台执行的一段命令,注意有&符号
expect "*#"
send "while true do flag=$(cat /tmp/a.txt) if [ \"$flag\" = \"1\" ]then break fi sleep 300 done\r"
expect "*#"
send "exit\r"
expect eof
END
touch /tmp/final
上面是实现此效果的大致代码,没有测试过,可能会有些小问题,大致思路如此,希望对你有帮助。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)