ssh的shell脚本
1. shell脚本中ssh到远程机子时,提示输入密码用变量给出密码 要怎么做请各位帮忙
#!/usr/桐缺册bin/expect
set pw pawword
spawn ssh 192.168.1.200
expect 'password: '
send "$pw\r"
expect '#'
send "exit\扮枯r"
expect eof
chmod +x ssh.sh
./局宏ssh.sh 试试呢 哈哈
2. 利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集
假设从主机A,检查主机B上的进程,
需要在主机B上建立检查用户,例如叫x,
并设置通过public key认证登录SSH,不会可以google搜一下,
然后,在A机器上执行:
ssh x@B ~/command.sh > result.txt
command.sh就是B机器上放置在x目录下的脚本。
输出结果应该是写到了result.txt
或者另一种写法
result=`ssh x@B ~/command.sh`
结果直接保存到result变量中了。
暂时没有linux环境,所以没有实际测试,你自己试试吧
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好
3. Linux,在shell脚本中实现用ssh或者telnet方式登录另一个linux主机,然后修改第二个linux上的一个文件。
#!/usr/bin/expect-f
settimeout30
setipaddr"192.168.0.100"#IP地址
setusername"root"#用户名
setpassword"password"#密码
spawnssh$username@$ipaddr
expect{
"yes/no"{send"yes ";exp_continue}
"password:"{send"$password "}
}
expect"]#"#用户的提示符,根据需要修改一下
send"ls "#执行的命令,换成自己修改文件的
send"exit "
expecteof
exit
4. 本地shell脚本中ssh到远程服务器并执行命令
在实际运用中在当前服务器执行命令后,需要在另一台服务器继续执行某些命令,和耐衫分开去到另一台服务器执行也是比较麻烦的,因此整理下集中执行的方式唤腔
1、首先配置ssh免密操作
Linux 下实现SSH互信: https://www.jianshu.com/p/2456d98aa607
2、简单命令
ssh [email protected] "cd /var/lib; ls; cd "
2.1 使用时注意,双引号必须有。若没加双引号,第二条及之后的命令会在本地执行
2.2 分号是将两条语句间隔开
2.3 单双引的区别:单引号不会解析值,是什么就传什么;双引号会解析值,将解析结果传过去
3、多条命令
ssh [email protected]<< 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 [email protected] -p 22
--------------------------------------------------------------------------------
参考:https://blog.csdn.net/jinking01/article/details/84386769
5. 请问我在Linux下想实现一个终端同时通过SSH执行其它多个终端内的shell脚本怎么实现
ssh $IP_102 -l $User "sh 102.sh"&
ssh $IP_103 -l $User "sh 103.sh"&
这样执行就可以同时执行了,否则是一个一个执行的。
如果判断是否执行完成就写一个log日志,看好读日志就可以了。