欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于SSH 遠(yuǎn)程執(zhí)行命令你要知道的二三事

 更新時間:2017年07月25日 10:42:44   作者:koala bear  
SSH 是 Linux 下進行遠(yuǎn)程連接的基本工具,但是如果僅僅用它來登錄那可是太浪費啦!SSH 命令可是完成遠(yuǎn)程操作的神器啊,下面這篇文章主要給大家介紹了關(guān)于SSH 遠(yuǎn)程執(zhí)行命令的一些相關(guān)資料,需要的朋友可以參考下。

前言

相信大家在工作的時侯,可能會遇到要利用 ssh 在本地執(zhí)行遠(yuǎn)程機器的命令可以便捷地處理某些重復(fù)工作,我們希望做到:

  • 免手工輸入密碼
  • 支持執(zhí)行多個命令,執(zhí)行 shell 腳本
  • 支持執(zhí)行 sudo 的命令

免手工輸入密碼

我們可以使用 ssh 互信,sshpass 和 expect 等工具來避免手工輸密碼。

使用過程可能會碰到如下需要手工輸入 yes 的繁瑣場景:

$ ssh username@hostname
The authenticity of host ... can't be established.
ECDSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)?

為了避免出現(xiàn)上述場景,往 ssh 命令添加如下參數(shù):

$ ssh -o "StrictHostKeyChecking no" username@password

SSH 互信

SSH 互信的配置非常簡單,首先生成 ssh key:

$ ssh-keygen

把 public key 拷貝到信任方中:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname

之后免密執(zhí)行命令:

$ ssh -o "StrictHostKeyChecking no" username@password cmd

sshpass

sshpass 是一個用于非交互的 ssh 密碼驗證工具,使用前先安裝:

$ yum install sshpass

使用如下:

$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@hostname cmd

expect

Expect 是用來進行自動化控制和測試的軟件工具。雖然學(xué)習(xí)成本較高,但是 expect 的功能強大,利用 expect 可以方便的執(zhí)行遠(yuǎn)程命令。使用前先安裝:

$ yum install expect

例如:

#!/usr/bin/expect

spawn ssh -o "StrictHostKeyChecking no" username@hostname
expect "*assword*"
send "password\n"
expect "*$*"
send "command\n"
expect "*$*"
send "exit\n"
expect eof

Expect 不僅支持 ssh,還支持 scp, ftp 等工具。

支持多命令和腳本

執(zhí)行多條命令

sshpass 和 expect 在支持多條命令上非常類似,只需用 && 連接命令即可:

# ssh trust
$ ssh -o "StrictHostKeyChecking no" username@password "cmd1 && cmd2"

例如:

# sshpass
$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@password "ls -a && mkdir test"

# expect
......
expect "*$*"
send "ls -a && mkdir test\n"
......

執(zhí)行本地腳本

對于執(zhí)行本地腳本,ssh 和 sshpass 的用法類似。

# ssh trust
$ ssh -o "StrictHostKeyChecking no" username@password bash -s < shell_script.sh

# sshpass
$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@password bash -s < shell_script.sh

對于 expect,首先需要把腳本拷貝到遠(yuǎn)程主機,然后在遠(yuǎn)程主機執(zhí)行該腳本,步驟如下:

...
# Copy script to remote host
spawn scp -o "StrictHostKeyChecking no" shell_script.sh username@hostname:~/
expect "*assword*"
send "password\n"
expect "*100%*"
expect eof

# Execute the shell script at remote host
spawn ssh -o "StrictHostKeyChecking no" username@hostname
expect "*assword*"
send "password\n"
expect "*$*"
send "sh shell_script.sh\n"
......

支持執(zhí)行 sudo 命令

有些命令需要 sudo 權(quán)限才能執(zhí)行,但是我們不希望重復(fù)的輸入密碼,我們可以把每條命令修改為如下:

cmd ---> 'echo password | sudo -S cmd'

例如:

$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@password "echo password | sudo -S mkdir /newdir"

對于如 echo, dd 等部分命令,有時會出現(xiàn)如下失敗場景:

$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@password 'echo password | sudo -S echo hello > /newdir/newfile'
bash: /newdir/newfile: 權(quán)限不夠

解決辦法如下:

cmd ---> 'echo password | sudo -S sh -c "cmd"'

# For example
$ sshpass -p password ssh -o "StrictHostKeyChecking no" username@password 'echo WSfdl097018= | sudo -S sh -c "echo hello > /newdir/newfile"'

如果采用 expect,需要把腳本拷貝到遠(yuǎn)程主機,然后在遠(yuǎn)程主機采用 sudo 執(zhí)行該腳本,相對 sshpass 更簡便和健壯:

...
# Copy script to remote host
spawn scp -o "StrictHostKeyChecking no" shell_script.sh username@hostname:~/
expect "*assword*"
send "password\n"
expect "*100%*"
expect eof

# Execute the shell script at remote host
spawn ssh -o "StrictHostKeyChecking no" username@hostname
expect "*assword*"
send "password\n"
expect "*$*"
send "sudo sh shell_script.sh\n"
expect "*assword*"
send "password\n"
......

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • shell?循環(huán)命令詳解

    shell?循環(huán)命令詳解

    這篇文章給大家介紹了shell?循環(huán)命令的相關(guān)知識,包括for命令使用,c?風(fēng)格?for?命令及while?命令等等,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-10-10
  • Linux下的tar壓縮解壓縮命令詳解(小結(jié))

    Linux下的tar壓縮解壓縮命令詳解(小結(jié))

    這篇文章給大家分享了linux下的tar 壓縮解壓縮命令,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-03-03
  • shell腳本實現(xiàn)定時刪除文件或文件夾

    shell腳本實現(xiàn)定時刪除文件或文件夾

    本文主要介紹了shell腳本實現(xiàn)定時刪除文件或文件夾,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Linux系統(tǒng)上實現(xiàn)定時重啟Tomcat服務(wù)腳本介紹

    Linux系統(tǒng)上實現(xiàn)定時重啟Tomcat服務(wù)腳本介紹

    大家好,本篇文章介紹的是Linux系統(tǒng)上實現(xiàn)定時重啟Tomcat服務(wù)腳本介紹,感興趣的同學(xué)趕緊來看看,希望可以對你起到幫助
    2021-11-11
  • shell?set?-u?和set?+u的具體使用

    shell?set?-u?和set?+u的具體使用

    本文主要介紹了shell?set?-u?和set?+u的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 反彈shell的幾種姿勢小結(jié)

    反彈shell的幾種姿勢小結(jié)

    在滲透過程中,往往因為端口限制而無法直連目標(biāo)機器,此時需要通過反彈shell來獲取一個交互式shell,以便繼續(xù)深入,本文就介紹了幾種方法,感興趣的可以了解一下
    2021-07-07
  • Python執(zhí)行Linux系統(tǒng)命令的4種方法

    Python執(zhí)行Linux系統(tǒng)命令的4種方法

    這篇文章主要介紹了Python執(zhí)行Linux系統(tǒng)命令的4種方法,即在Python腳本中調(diào)用Shell命令,需要的朋友可以參考下
    2014-10-10
  • shell實現(xiàn)貪吃蛇的示例代碼

    shell實現(xiàn)貪吃蛇的示例代碼

    本文主要介紹了shell實現(xiàn)貪吃蛇的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 查找目錄下同名但不同后綴名文件的shell腳本代碼

    查找目錄下同名但不同后綴名文件的shell腳本代碼

    這個腳本可以實現(xiàn)指定目錄下同名但不同后綴名的查找,可以拓展為刪除指定的文件的腳本,覺得很實用,分享一下
    2013-02-02
  • Shell腳本批量清除Nginx緩存

    Shell腳本批量清除Nginx緩存

    這篇文章主要介紹了Shell腳本批量清除Nginx緩存,本文直接給出實現(xiàn)代碼和執(zhí)行效果圖,需要的朋友可以參考下
    2014-12-12

最新評論