Shell脚本可以节省您的时间和精力,但如果您不保护您的密码,它们可能会成为您的负担。这是保持安全的方法。Bash脚本是系统管理员工作的重要组成部分。它们允许您自动执行常见和关键任务。使用脚本的好处之一是它们可以在没有人为干预的情况下独立运行,但有时自动化需要用户密码的任务可能具有挑战性。让我们看看如何在不影响安全性的情况下安全地自动化需要密码的脚本。创建一个简单的脚本假设您想创建一个简单的脚本来将您的Linux主文件夹备份到远程位置,以便您可以在数据丢失时轻松恢复数据。首先在您的主文件夹中创建一个Bash脚本文件,使用touch命令或其他命令,并将其命名为linuxmi.sh。随意使用您喜欢的任何名称和目录。该脚本使用rsync命令,一个强大的文件复制工具,将本地主目录中的所有文件备份到远程服务器。复制以下脚本的内容并将其粘贴到您的Bash文件中。请记住将用户linuxmi替换为本地家庭用户的正确名称。还要为远程服务器提供正确的用户名和IP地址。#!/bin/bash#Copydatatoremoteserverrsync-avl--mkpath/home/linuxmiuser_name@remote_server/home/Backup如果你没有远程服务器来测试,你可以简单地安装VirtualBox并运行它在你的本地机器上设置一个虚拟机。使用VM客户端作为远程服务器。保存文档。要执行脚本,您需要使用sudochmod755命令授予它执行权限。所有用户都可以执行脚本,但只有sudo用户可以修改文件。最后,使用以下命令从终端执行Bash脚本:./linuxmi.sh无论何时运行此脚本,系统都会提示您输入远程服务器密码。如果您希望在没有人为干预的情况下运行脚本,例如在使用Cron时,这不是我们想要的。自动密码登录会在您的本地PC或运行脚本的PC上安装sshpass,一个非交互式密码提供程序。在基于Debian的发行版上如果您使用的是基于Debian的发行版,例如Ubuntu、Pop!_OS或Lubuntu:sudoaptupdate&&sudoaptinstallsshpass在RHEL和Fedoradnfinstallsshpass安装sshpass后修改脚本,使其看起来像this:#!/bin/bash#Copydatatoremoteserversshpass-p"yourpassword"rsync-avl--mkpath/home/linuxmiuser_name@remote_server/home/Backup这里密码以纯文本形式提供。显然这不是理想的方式,因为它既不安全也不是好的做法。如果您的文件落入坏人之手,您就有大麻烦了。为了增加安全性,我们将使用GnuPG,一种安全的开源加密工具。加密你的密码GnuPG在大多数Linux系统上默认安装,但如果你的系统上没有安装GnuPG,这里是安装方法。使用命令touch.secrets创建一个名为secrets的隐藏文件。作为一项额外的安全措施,我们默认隐藏文件,以下是在Linux上查看隐藏文件的方法。在secrets文件中,输入远程PC的密码并保存。接下来,使用gpg命令加密文件。sudogpg.secrets系统将提示您输入安全且强大的密码以打开加密文件。GnuPG将创建一个新文件,其扩展名.gpg附加到旧文件名。您的新文件名现在应该是secrets.gpg,假设您使用的是secrets文件名。如果你使用cat命令查看secrets.gpg的内容,你会看到类似下面的一些文本,表明你的密码已加密。要以明文形式查看文件内容,需要使用以下命令对其进行解密(系统会提示您输入加密时设置的密码):gpg-dqsecrect.gpg要使用中的加密密码,请更新脚本如下:#!/bin/bash#复制数据到远程服务器gpg-dqsecrets.gpg|sshpassrsync-avl--mkpath/home/linuxmiuser_name@remote_server/home/Backup再次运行备份脚本,这次没有提示输入密码。使用Bash脚本自动执行任务GnuGP通常用于保护PC上的敏感文件和数据,也是保护Linux上自动Bash脚本中的密码的好工具。您可以使用Bash脚本做很多事情。Bash是一个强大的工具,可以帮助你在Linux上自动化很多事情,学习编写Bash脚本是一项值得的投资。
