我在 bash 脚本中使用 rsync 来保持几个服务器和 NAS 之间的文件同步。我遇到的一个问题是尝试生成在 rsync 期间已更改的文件列表。
这个想法是,当我运行 rsync 时,我可以将已更改的文件输出到文本文件中 - 更希望内存中有一个数组 - 然后在脚本存在之前,我可以只对已更改的文件运行 chown 。
有没有人找到一种方法来执行这样的任务?
# specify the source directory
source_directory=/Users/jason/Desktop/source
# specify the destination directory
# DO NOT ADD THE SAME DIRECTORY NAME AS RSYNC WILL CREATE IT FOR YOU
destination_directory=/Users/jason/Desktop/destination
# run the rsync command
rsync -avz $source_directory $destination_directory
# grab the changed items and save to an array or temp file?
# loop through and chown each changed file
for changed_item …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个 bash 脚本(在 Ubuntu 中),它将使用 tar 备份目录。
如何检查脚本,使其只能以 root 身份(或使用 sudo)运行?
例如,如果用户运行该脚本,则应该说该脚本必须以 sudo 权限运行,然后退出。如果脚本以 root 身份执行,它将继续通过检查。
我知道必须有一个简单的解决方案,我只是无法通过谷歌搜索找到它。
我一直在谷歌上搜索这个问题无济于事。我正在工作中自动化构建过程,我要做的就是获取版本号和可能是多行的构建的微小描述。它运行的系统是 OSX 10.6.8。
我已经看到了从使用 CAT 到根据需要处理每一行的所有内容。我不知道我应该使用什么以及为什么。
read -d '' versionNotes
Run Code Online (Sandbox Code Playgroud)
如果用户必须使用退格键,则会导致输入乱码。也没有终止输入的好方法,因为 ^D 不会终止,而 ^C 只是退出进程。
read -d 'END' versionNotes
Run Code Online (Sandbox Code Playgroud)
有效...但如果需要退格键,输入仍然会出现乱码。
while read versionNotes
do
echo " $versionNotes" >> "source/application.yml"
done
Run Code Online (Sandbox Code Playgroud)
没有正确结束输入(因为我来不及查找空字符串的匹配项)。
在我的组织中,我与一群 NOC 员工、初出茅庐的初级工程师和少数高级工程师一起工作;所有这些都专注于 Linux。公司培养人才的一个有趣步骤是,有一条从 NOC 到高级工程队伍的途径。将人才库视为一个相对较新的人,我发现随着时间的推移,技能组合存在分歧……
一些员工之间的一个区别因素是他们对脚本、自动化和配置管理方法的接受程度。例如,我们有两名工程师负责 Amazon AWS CloudFormation的大部分工作,另一名负责处理大部分Puppet基础设施。也许四分之一的工程师精通 BASH shell 脚本。
在就业市场对DevOps 技能的需求非常高的背景下,我很好奇其他组织如何促进这些技能的发展并培养他们的内部人才。脚本编写似乎不是一个特别可教的概念。
有时您的脚本需要在不同的 Linux 上表现不同。如何确定脚本在哪个版本的 Linux 上运行?
我需要在 bat 脚本文件中运行 Windows 命令 n 次。我知道如何使用各种编程语言执行此操作,但无法在 Windows 命令行上正确执行:-(
我希望有类似的东西
for(int i = 0; i < 100; i++) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
甚至这个(虽然不完全是认真的)
1.upto(100, {
// do something
})
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑
我可以用 java、perl、c 或任何会生成 bat 脚本的程序编写如下所示
for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N
Run Code Online (Sandbox Code Playgroud)
等等。甚至“更好”:
echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12 …Run Code Online (Sandbox Code Playgroud) 使用 postfix,我希望将所有传入邮件发送到任何地址(包括那些未映射到本地用户的地址)通过管道传输到脚本。我试过配置mailbox_command中/etc/postfix/main.cf:
mailbox_command = /path/to/myscript.py
Run Code Online (Sandbox Code Playgroud)
如果用户是本地用户,这很有效,但对于没有别名的“未知”用户则失败。我尝试设置luser_relay为本地用户,但这会抢占mailbox_command,因此该命令不会运行。我尝试设置local_recipient_maps=(空字符串),但消息仍然被退回(未知用户)。
是否有我可以使用的魔术调用来让所有已知和未知用户也转到脚本?
完整/etc/postfix/main.cf如下——它是默认的 Ubuntu 10.04,除了以下mailbox_command行:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job. …Run Code Online (Sandbox Code Playgroud) 当我在第一份工作中担任管理员时,我对 Windows 服务器的管理流程是一系列点击操作感到沮丧。我们永远无法与 Unix 服务器的效率水平相提并论,因为它有一组 shell 脚本来自动化大量工作。我很快就读到了 WSH 和ADSI并立即了解了我能够通过脚本实现多少自动化。
但是有一个很大的问题 - 我的 Windows 同事几乎没有一个真正对学习脚本感兴趣。他们似乎对手动点击鼠标的琐事很满意,并且对使用脚本代表他们完成工作的前景从不感到兴奋。尽管效率明显提高,但我还是努力说服他们学习脚本技能。此后,我离开了那份工作,开始了全职软件开发职业。
在各种环境和不同客户中工作了将近十年,我仍然遇到 Windows 管理员主要拥有这种一般的“情绪”,他们会尽可能避免编写脚本。尽管可访问性水平不断提高,但 Windows 服务器技术正在为脚本和自动化开放。我几乎可以肯定,大多数管理员都是管理员,因为他们绝对讨厌执行任何类型的编程职责。从长远来看,有哪些方法可以鼓励和激励管理员脚本编写确实可以帮助他们?
我在 DOS 脚本中遇到了一个错误,该错误使用日期和时间数据进行文件命名。问题是我最终出现了一个差距,因为时间变量没有自动提供小时 < 10 的前导零。所以运行> echo %time% 返回:'9:29:17.88'。
有没有人知道有条件地填充前导零来解决这个问题的方法?
更多信息:我的文件名设置命令是:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
Run Code Online (Sandbox Code Playgroud)
最终是:C:\Temp\robolog_20100602_93208.log(早上 9:23)。
这个问题和这个有关。
谢谢
是否可以将配置文件与 PowerShell 脚本一起使用?
例如配置文件:
#links
link1=http://www.google.com
link2=http://www.apple.com
link3=http://www.microsoft.com
Run Code Online (Sandbox Code Playgroud)
然后在 PS1 脚本中调用此信息:
start-process iexplore.exe $Link1
Run Code Online (Sandbox Code Playgroud) scripting ×10
bash ×3
windows ×3
batch ×2
linux ×2
automation ×1
permissions ×1
postfix ×1
powershell ×1
puppet ×1
root ×1
rsync ×1
time ×1