[转帖]Linux ssh远程执行命令

linux,ssh,远程,执行命令 · 浏览次数 : 0

小编点评

```bash #!/bin/bash # 设置 SSH 远程登录参数 passwd='root@123' # 创建 SSH 远程执行脚本文件 ssh_script="remoteShellExec.sh" # 创建远程执行脚本文件内容 cat << EOF > "$ssh_script" #!/bin/bash # 设置 SSH 远程登录参数 ssh_user='root@10.1.205.166' # 使用 expect 等工具远程执行 SSH 命令 expect { "*yes/no" { send "yes\\r\"; exp_continue } "*password:\" { send "$passwd\\r" } } # 等待 SSH 连接完成 expect eof # 停止伪终端分配 exit 0 EOF # 运行 SSH 脚本文件 ssh "$ssh_user@$ssh_script" ```

正文

[root@slave1 docker]# vi remoteShellExec.sh
[root@slave1 docker]#
#!/bin/bash

passwd='root@123'

/usr/bin/expect<<EOF

set time 30
spawn ssh root@10.1.205.166 -tt unzip -o /home/docker/alarm-collection.zip  -d /home/docker/
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect eof
EOF

[root@slave1 docker]#

 

注意:如果ssh没加tt参数(表示不为这个连接分配TTY,这里非得用两个tt才不会报错),可能会报Pseudo-terminal will not be allocated because stdin is not a terminal的错

所有shh参数如下:

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。
-n:表示只连接远程主机,不打开远程shell;
-t:表示不为这个连接分配TTY

 -T      Disable pseudo-terminal allocation.

 -t      Force pseudo-terminal allocation.  This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services.  Multiple -t options force tty allocation, even if ssh has no local tty. (强制伪终端分配。这可以用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时,即使ssh没有本地tty,多个-t选项也可以强制分配tty)

tty是Teletype的缩写——终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux进阶新增用户23099 人正在系统学习中

与[转帖]Linux ssh远程执行命令相似的内容:

[转帖]Linux ssh远程执行命令

[root@slave1 docker]# vi remoteShellExec.sh [root@slave1 docker]# #!/bin/bash passwd='root@123' /usr/bin/expect<

[转帖]ssh 远程执行命令

https://www.cnblogs.com/youngerger/p/9104144.html SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进

[转帖]通过 SSH 在远程 Linux 系统上执行命令

https://linux.cn/article-15263-1.html 通过安全的网络连接在远程计算机上调用命令或程序。 有一天,我正在测试如何在 将文件或目录复制到多个位置和系统时保持完整的文件权限。当我想检查远程系统上的文件权限时,我必须通过 SSH 登录它并检查属性。从远程系统多次登录和注

[转帖]telnet命令使用详解

https://www.cnblogs.com/PatrickLiu/p/8556762.html telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采

[转帖]Linux 启动或禁止用户或 IP 通过 SSH 登录

https://www.jianshu.com/p/495f2d34eec2 限制用户 SSH 登录 1.只允许指定用户进行登录(白名单):在 /etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项,(配置完成需要重启 SSHD 服务)格式如下: AllowUsers

[转帖]如何用python连接Linux服务器

1.安装paramiko库 pip install paramiko 2.使用paramiko库连接linux #导入库 import paramiko #创建一个sshclient对象 ssh = paramiko.SSHClient() #允许连接不在know_host中的主机 ssh.set_

[转帖]Shell编程之免交互

目录 交互的概念与Linux中的运用Here Document 免交互tee命令重定向输出加标准输出支持变量替换多行注释Expect实例操作免交互预设值修改用户密码创建用户并设置密码实现 ssh 自动登录 交互的概念与Linux中的运用 交互:当计算机播放某多媒体程序的时候,编程人员可以发出指令控制

[转帖]Linux 磁盘I/O 调度算法 说明

2022-08-23 13:031361转载Linux 1 Linux 4.0 IO协议栈框架图 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 Linux 4.0 IO协议栈框架图 I/O调度程序的总结 当向

[转帖]Linux中常见IO调度器

https://www.jianshu.com/p/3c16e39a005a 单队列调度算法多队列调度算法 deadline mqdeadlines cfq bfq noop none kyber 对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略 cfq: 这个名字是

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以