我有一个脚本,如果文件存在与否,我想显示不同的消息。我有一个像这样的脚本:
count=ls /import/*.zip | wc -l
echo "Number of files: " $count
if [ "$count" > "0" ]; then
echo "Import $count files"
else
echo "**** No files found ****"
fi
Run Code Online (Sandbox Code Playgroud)
但是,如果不存在文件,则会显示No such file or directory而不是 0 个文件。目录中有一个目录/import/,所以我不能只执行ls命令,因为它总是会返回大于 0 的值。
如何计算特定扩展名(.zip、.gz 等)的文件数并在 bash 脚本中使用该值来显示文件数,然后在 if 语句中使用它来显示不同的消息?
我正在使用 Amazon EC2,并且我有一些支持 EBS 的 Windows AMI。当我从 EBS 快照启动新实例时,EC2Config 服务会为我准备 Windows 机器。我知道 EC2Config 何时完成,因为我可以检查实例控制台输出 - 一旦它显示“Windows 已就绪”,我就知道我很好。
我正在寻找的是一种从操作系统内部告诉“Windows 已准备就绪”的方法。我认为可从操作系统内部访问的元数据 URL 会告诉我这一点,但我找不到任何合适的值。
http://169.254.169.254/latest/meta-data/
我的目标是在“Windows 就绪”后运行配置脚本。我的一些配置任务需要确保机器在启动前已完全配置 - 特别是在 EC2Config 重命名计算机并重新启动时。我可以使用 EC2 工具或 C# 编写一些东西……但这需要我在我的 AMI 上使用我的 AWS 密钥(我不想这样做)。理想情况下,我想查看机器本身上的某些内容,以判断何时可以开始配置——例如 EventLog 条目、查看文本文件、检查元数据 URL 等。
附带问题:我可以使用一篇很好的文章来说明捆绑/取消捆绑过程对 EBS 机器的作用。
我有一个脚本可以在我的开发服务器上正常工作,但是当我尝试在生产中运行它时不起作用。
我收到以下错误,我无法弄清楚:
./test.sh:第 5 行:UID:只读变量
有什么建议?
#!/bin/sh
while read inputline
do
UID="$(echo $inputline | cut -d '"' -f4)"
PASSWORD="$(echo $inputline | cut -d '"' -f8)"
FIRST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f1)"
LAST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f2)"
zmprov createAccount $UID $PASSWORD displayName "$FIRST $LAST" givenName $FIRST sn $LAST
done < company.csv
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的脚本实现一种空运行的机制,并面临当命令作为参数传递给函数并导致意外行为时引号被剥离的问题。
dry_run () {
echo "$@"
#printf '%q ' "$@"
if [ "$DRY_RUN" ]; then
return 0
fi
"$@"
}
email_admin() {
echo " Emailing admin"
dry_run su - $target_username -c "cd $GIT_WORK_TREE && git log -1 -p|mail -s '$mail_subject' $admin_email"
echo " Emailed"
}
Run Code Online (Sandbox Code Playgroud)
输出是:
su - webuser1 -c cd /home/webuser1/public_html && git log -1 -p|mail -s 'Git deployment on webuser1' user@domain.com
Run Code Online (Sandbox Code Playgroud)
预期的:
su - webuser1 -c "cd /home/webuser1/public_html && git log -1 -p|mail -s 'Git deployment on webuser1' …Run Code Online (Sandbox Code Playgroud) 我的脚本中有一个 Param 块
Param (
[Parameter(Mandatory=$True)]
[string]$FileLocation,
[Parameter(Mandatory=$True)]
[string]$password = Read-Host "Type the password you would like to set all the users to" -assecurestring
)
Run Code Online (Sandbox Code Playgroud)
我可以在必填的参数字段中使用 Read-Host CmdLet 吗?如果不是,我能做些什么来确保我采用正确类型的变量类型,以便我可以将它传递给用户创建过程?
我正在尝试找到一种方法来编写安装证书的脚本。
转到“右键单击->安装证书”工作,并在 IE 的证书视图中的“从属证书颁发机构”下显示证书
如果找到 certutil.exe 命令,
certutil.exe -addstore -enterprise <storename>
Run Code Online (Sandbox Code Playgroud)
我的问题是你如何列出/找出有效的商店名称?
由于我无法控制的原因,我的任务是设置 GPO/GPP 以将我们的 100 多台打印机部署到我们的 1000 多个客户。
好消息是我们有十多个站点,而且在大多数情况下,我可以将站点 X 的所有打印机推送到站点 X 的所有客户端 PC。
坏消息是,我知道的两种方法(“使用组策略部署...”,来自打印服务器”和使用 GPP/组策略首选项)涉及的手动工作比我愿意的要多得多这么多打印机。我什至似乎无法选择打印服务器上的所有打印机并使用该Deploy with Group Policy...选项,例如-它希望我逐一执行此操作,这不会发生。GPP 甚至更糟,因为它希望我从打印服务器中选择打印机的路径,然后手动输入它应该能够从打印机连接中获取的一堆信息(例如打印机 IP)。
我的用于将打印服务器上的所有打印机添加到 GPO/GPP 的脚本的 Google-Fu 是空的,我似乎看不到以半自动方式执行此操作的另一种方法,但我坚持相信我遗漏了一些东西,因为任何理智的人都不会选择手动将数百台打印机添加到 GPO 中。
理想情况下,我想找到一种使用 GPP 的编程方式,但在这种情况下,任何不涉及数十小时手动添加打印机的解决方案都会很棒。
有没有人有办法做到这一点,或者我是否需要构建一个 PowerShell 脚本和/或诱使下属这样做?
在 Office 365 中,是否可以导出 SMTP 日志?也许在 powershell 或任何其他方式。
我的目标是全面了解从特定域发送和发送到特定域的所有消息。
我遇到的情况是,大量部署 Windows 10 计算机和用户打开了一些真正可怕的高对比度主题,然后消耗 IT 资源,因为他们无法将其更改回来。
我知道,有一个键盘快捷键来切换此设置(Alt+ Shift+ Print Screen),但跑来跑去这样做或正在尝试的用户教育太耗费资源,而且我知道的选项完全阻止访问辅助功能设置,但我们让有视觉障碍的用户需要访问非恶意的易用设置,所以这不是一个选择。 我也知道防止用户更改主题的选项,但在此之前,我需要摆脱这种高对比度主题垃圾。
有谁知道通过脚本或 GPO 简单地关闭高对比度主题的方法?
我们在 IIS 7.5 上遇到了一个问题,我们有一个简单的部署系统,它包含以下内容:
创建一个新的 webroot 的 zip 文件,包含三个文件夹:
Api
Site
Manager
Run Code Online (Sandbox Code Playgroud)
它被解压到一个新文件夹中(假设我们称之为“SITE_REV1”),并包含一个调用以下内容的脚本(每个 webroot 一个):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
这通常工作,在 9/10 倍。在某些情况下,webroot 似乎已正确更新(如果我检查 IIS 管理器中的基本设置,路径看起来是正确的),但有问题的运行站点实际上指向旧位置。我们设法“修复它”的唯一方法是运行 IIS 重置。仅回收有问题的应用程序池是不够的。
有时似乎甚至有必要重新启动,但我不能 100% 确定这是准确的(并非总是我自己在解决问题)。
我使用 Powershell 和 Web-Administration 模块重写了脚本,希望 appcmd 中存在故障,但发生了同样的问题。
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
有没有人经历过这样的事情?有没有人知道发生了什么,我可以尝试做些什么来防止这个问题?执行 IIS 重置对我们来说并不是一个好的选择,因为每次我们尝试在单个站点上部署更改时,这都会影响服务器上的所有站点。
编辑:我们已经确定在 IIS 管理器中启动/停止站点(而不是应用程序池)可以解决错误的物理路径,但是如果我使用 appcmd 停止站点,更改物理路径,然后启动它,我仍然遭受同样的问题。我在一片空白...
scripting ×10
bash ×3
powershell ×3
group-policy ×2
windows ×2
amazon-ec2 ×1
appcmd ×1
deployment ×1
iis-7.5 ×1
linux ×1
shell ×1
startup ×1
windows-10 ×1
windows-xp ×1