linux远程登录命令6,通过SSH在远程Linux操作系统上执行命令的方法

本文介绍通过SSH在远程Linux操作系统上执行命令的方法,包括运行多个命令,可以从本地系统执行操作,而不必登录到远程系统,这可以节省到很多的时间,SSH允许你在不登录计算机的情况下在远程计算机上运行命令。通用为:$ ssh [User_Name]@[Rremote_Host_Name or IP] [Command or Script]。

1)如何通过SSH在远程Linux系统上运行命令

以下示例允许用户在远程Linux机器上通过ssh运行df命令:

$ ssh daygeek@CentOS7.2daygeek.com df -h

a8382e4832a197191964347fc5c323db.png

2)如何通过SSH在远程Linux系统上运行多个命令

以下示例允许用户在远程Linux系统上通过ssh一次运行多个命令。

在远程Linux系统上同时运行uptime命令和free命令:

$ ssh daygeek@CentOS6.2daygeek.com "uptime && free -m"

37f5a7468c65e077a7de309c0fe7c439.png

3)如何通过SSH在远程Linux系统上使用sudo特权运行命令

以下示例允许用户通过ssh在远程Linux系统上以sudo特权运行fdisk命令。

普通用户不允许执行系统二进制(/usr/sbin/)目录下的可用命令,用户需要root特权才能运行它。

因此,要在Linux系统上运行fdisk命令,需要root特权。参考在Ubuntu系统上为用户授予和删除sudo权限的方法。

which命令返回给定命令的可执行文件的完整路径:

$ which fdisk

/usr/sbin/fdisk

$ ssh -t daygeek@CentOS7.2daygeek.com "sudo fdisk -l"

52f125edd01d8457170c8ec0e54b1f32.png

4)如何通过SSH在远程Linux系统上使用sudo特权运行Service命令

以下示例允许用户通过ssh在远程Linux系统上以sudo特权运行service命令:

$ ssh -t daygeek@CentOS7.2daygeek.com "sudo systemctl restart httpd"

[sudo] password for daygeek:

Connection to centos7.2daygeek.com closed.

5)如何使用非标准端口通过SSH在远程Linux系统上运行命令

以下示例允许用户在具有非标准端口的远程Linux计算机上通过ssh运行hostnamectl命令:

$ ssh -p 2200 daygeek@Ubuntu18.2daygeek.com hostnamectl

6e5b30b22fde6b1bd79567ff4560f0a5.png

6)如何将输出从远程系统保存到本地系统

以下示例允许用户通过ssh在Linux系统上远程执行top命令,并将输出保存到本地系统:

$ ssh daygeek@CentOS7.2daygeek.com "top -bc | head -n 35" > /tmp/top-output.txt

c57ded38f959e5560805b85535685799.png

或者,可以使用以下格式在远程系统上运行多个命令:

$ ssh daygeek@CentOS7.2daygeek.com << EOF

hostnamectl

free -m

grep daygeek /etc/passwd

EOF

上面命令的输出:

09cc87bfda8f16907c91e329c00a477e.png

7)如何在远程系统上执行本地Bash脚本

以下示例允许用户在远程Linux计算机上通过ssh运行本地bash脚本“remote-test.sh”。

创建一个shell脚本并执行它。

$ vi /tmp/remote-test.sh

#!/bin/bash

#Name: remote-test.sh

#--------------------

uptime

free -m

df -h

uname -a

hostnamectl

上面命令的输出:

$ ssh daygeek@CentOS7.2daygeek.com 'bash -s' < /tmp/remote-test.sh

df0936758aee479e22403f622c754cb9.png

或者,可以使用管道,如果你认为输出效果不好,请进行一些更改以使其更美观:

$ vi /tmp/remote-test-1.sh

#!/bin/bash

#Name: remote-test.sh

echo "---------System Uptime----------------------------------"

uptime

echo -e "\n"

echo "---------Memory Usage----------------------------------"

free -m

echo -e "\n"

echo "---------Disk Usage----------------------------------"

df -h

echo -e "\n"

echo "---------Kernel Version----------------------------------"

uname -a

echo -e "\n"

echo "---------HostName Info----------------------------------"

hostnamectl

echo "----------------------------------"

上面脚本的输出:

$ cat /tmp/remote-test.sh  | ssh daygeek@CentOS7.2daygeek.com

ca4ef4387b674c0d96b93b0b4b21c7c2.png

8)如何在多个远程系统上同时运行多个命令

以下bash脚本允许用户在多个远程系统上同时运行多个命令,使用简单的for循环来实现它。

为此,可以尝试使用PSSH命令或ClusterShell命令或DSH命令:

$ vi /tmp/multiple-host.sh

for host in CentOS7.2daygeek.com CentOS6.2daygeek.com

do

ssh daygeek@${host} "uname -a;uptime;date;w"

done

上面脚本的输出:

$ sh multiple-host.sh

873bdbc421c334bfaeae4504b97bfb56.png

9)如何使用sshpass命令添加密码

如果每次都无法输入密码,我建议你根据需要使用以下任何一种方法。

如果你打算频繁执行此类活动,建议你设置无密码身份验证,因为这是一种标准且永久的解决方案。参考在Linux系统中运行没有sudo密码的特定命令。

如果你每月仅执行几次这些任务,我建议你使用“sshpass”实用程序。

只需使用“ -p”选项提供密码作为参数即可:

$ sshpass -p 'Your_Password_Here' ssh -p 2200 daygeek@192.168.1.12 ip a

88c06610a72412320e9c27b83d642115.png

相关主题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值