本文介绍通过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
2)如何通过SSH在远程Linux系统上运行多个命令 以下示例允许用户在远程Linux系统上通过ssh一次运行多个命令。 在远程Linux系统上同时运行uptime命令和free命令: $ ssh daygeek@CentOS6.2daygeek.com "uptime && free -m"
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"
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
6)如何将输出从远程系统保存到本地系统 以下示例允许用户通过ssh在Linux系统上远程执行top命令,并将输出保存到本地系统: $ ssh daygeek@CentOS7.2daygeek.com "top -bc | head -n 35" > /tmp/top-output.txt
或者,可以使用以下格式在远程系统上运行多个命令: $ ssh daygeek@CentOS7.2daygeek.com << EOF hostnamectl free -m grep daygeek /etc/passwd EOF 上面命令的输出:
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
或者,可以使用管道,如果你认为输出效果不好,请进行一些更改以使其更美观: $ 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
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
9)如何使用sshpass命令添加密码 如果每次都无法输入密码,我建议你根据需要使用以下任何一种方法。 如果你打算频繁执行此类活动,建议你设置无密码身份验证,因为这是一种标准且永久的解决方案。参考在Linux系统中运行没有sudo密码的特定命令。 如果你每月仅执行几次这些任务,我建议你使用“sshpass”实用程序。 只需使用“ -p”选项提供密码作为参数即可: $ sshpass -p 'Your_Password_Here' ssh -p 2200 daygeek@192.168.1.12 ip a
相关主题 |