我编写了一个 .cmd 文件,它调用了十个不同的 .exe 文件。我可以在我的服务器上本地运行这个 .cmd 文件,它运行良好。
当我将 [gpedit.msc](组策略编辑器)用于“计算机配置,Windows 设置”并将我的 .cmd 文件设置为启动脚本时,似乎没问题。
当我重新启动服务器时,从不调用启动脚本。我不明白为什么。我的目标是每次启动服务器时都执行此脚本。(不是登录)。
我正在测试的这台服务器不是域控制器。我不确定这是否与问题有关?帮助?
ps 这些是 EC2 Amazon 云服务器。我身边一阵疼痛。
scripting windows-server-2008 startup group-policy amazon-ec2
我需要知道自动缩放何时应该关闭实例,因为我希望实例注册自己并从给定服务中注销自己。
我知道自动缩放可以随时启动/停止任何实例,因此我需要通知实例何时关闭。
有没有办法实现这种行为?
按题目。
我发现关于使用WMI Windows打印服务器的脚本创建打印机的一些方法,但它看起来像WMI不支持群集打印服务器(或集群服务器在所有)。
中的脚本C:\Windows\System32\Printing_Admin_Scripts是无用的,因为它们不知道集群并且最终在活动集群节点上创建打印机(就像使用 WMI 一样)。
我发现能够在集群打印服务器上工作的唯一工具是printui.exe( 的快捷方式rundll32 printui.dll, PrintUIEntry),但它不能创建 TCP 打印端口:如果端口已经存在,它只能添加打印机。
如何在群集 Windows Server 2008 R2 打印服务器上完全编写打印机创建脚本(包括 TCP 打印端口!)?
scripting cluster printer print-server windows-server-2008-r2
经过一番搜索,我还没有找到解决方案。我认为搜索词太笼统了。我想知道如何执行由其他来源生成的多行(在 bash 提示符下)。例如,我有一个 Python 脚本,它动态生成许多 bash 命令并将print它们发送到标准输出。我希望将这些行作为 bash 脚本执行,而不必将它们保存到磁盘。例如:
$ python example.py
touch 1 2 3 4 5
rm 1 2 3 4 5
echo "Done"
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情:
$ python example.py | executeLines
Run Code Online (Sandbox Code Playgroud)
bash 中是否存在这样的命令/功能?有时其中一个命令可能会以非零退出状态退出,因此附加&&到每个命令然后运行:
$ `python example.py`
Run Code Online (Sandbox Code Playgroud)
不会总是有效,似乎是一个笨拙的解决方案。
我经常编写 wiki 说明以在 Ubuntu(目前为 11.10 Oneiric)上安装各种服务器包。它们总是涉及以下内容:
sudo apt-get install -y postfix
sudo cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
Run Code Online (Sandbox Code Playgroud)
但是当您将其剪切并粘贴到终端时,sudo、apt-get 或某些子shell 会随机吞下后续的输入行,并且只会apt-get install发生这种情况。
有没有办法让它更易于剪切和粘贴?我想我可以用
cat > script <<EOF
apt-get install -y postfix
cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
EOF
sudo sh ./script
Run Code Online (Sandbox Code Playgroud)
但有更好的方法吗?
我们公司的服务器运行 Ubuntu 12.04 (Precise) 和 Apache 2。我们安装了一个自定义的内部 Web 应用程序。我有一个 bash 脚本,可以将该应用程序的任何更新从源代码管理拉到服务器。系统上只有一个用户(脚本文件的所有者)拥有连接到源代码管理所需的 SSH 密钥,但我希望系统上的任何用户都能够运行此脚本来更新应用程序。
我做了一些研究,看起来这正是设计 setuid 位的目的,以便系统上的任何用户都可以运行脚本,并且脚本将使用脚本所有者的用户 ID 运行. 然而,现代发行版似乎忽略了脚本的 setuid 位,因为如果执行由 root 拥有的脚本会带来安全风险。
我以为我可以通过将它变成一个 perl 脚本来解决这个问题,但是从 Precise 开始,也不再有 suid-perl 包了。看起来这已被弃用。
我发现一些网站建议通过将用户添加到 sudoers 文件来解决这个问题,但是我的脚本不需要 root 权限来运行,并且它不会对文件系统的任何部分进行任何更改,除了网站,所以我宁愿不授予任何人 sudoer 权限。该脚本只需要脚本所有者的权限才能正常运行。
那么,使用(不同的、非 root、非 sudo)用户的 UID 执行脚本的首选现代方法是什么?
我在脚本中写了以下行,但它没有为变量 a 分配任何值
a= grep -n mark /etc/samba/smb.conf |cut -d: f1
Run Code Online (Sandbox Code Playgroud)
我方面行号,其中标记字符串存在于变量 a 中的 smb.conf 中。但是变量的值为空。可能是什么问题
我编写了一个小批处理文件来帮助我们进行服务器迁移以使用 GPO 重新映射用户目录。
然而,在批处理文件中,我遇到了一个语法问题,但它仍然失败。这是我到目前为止所拥有的。
If exist "\\server\UserData\%username%"
GOTO :UNMAP
ELSE
NET USE H: \\newserver\UserData\%USERNAME%
:UNMAP
NET USE H: /DELETE /Y
NET USE H: \\newserver\UserData\%USERNAME%
Run Code Online (Sandbox Code Playgroud)
现在,当我运行它时,我得到以下信息:
The syntax of the command is incorrect.
C:\>if exist "\\server\UserData\userfolder"
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题或我做错了什么吗?
我有一个像这样构建的变量:
ATTSTR=""
for file in $LOCALDIR/*.pdf
do
ATTSTR="${ATTSTR} -a \"${file}\""
done
Run Code Online (Sandbox Code Playgroud)
变量现在包含(注意文件名中的空格):
ATTSTR=' -a "/tmp/Testpage - PDFCreator.pdf"'
Run Code Online (Sandbox Code Playgroud)
现在我想在这样的命令中使用这个变量:
mutt -s "Subject" "${ATTSTR}" recipient@example.ec
Run Code Online (Sandbox Code Playgroud)
但事实证明它像这样扩展,因此命令失败(注意扩展变量周围添加的单引号):
mutt -s "Subject" ' -a "/tmp/Testpage - PDFCreator.pdf"' recipient@example.ec
Run Code Online (Sandbox Code Playgroud)
我希望我的变量在没有单引号的情况下扩展,使用"$ATTSTR"或$ATTSTR只是更糟。我怎样才能做到这一点?
我已经找到了一些可以检查变量是否具有特定值的示例
if $var == 'somevalue' {
...
}
Run Code Online (Sandbox Code Playgroud)
如果定义了某些东西
if defined(Package['somepackage']) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是如何检查用户是否存在,如果不存在则失败。知道如何使用脚本或 shell 测试的结果就足够了,因为这/usr/bin/id -u ${name} >/dev/null 2>&1就是我所需要的,即使检查用户目录是否存在也可以。
file并且exec不接受onlyif参数,否则这根本不是问题
scripting ×10
bash ×4
linux ×3
amazon-ec2 ×2
autoscaling ×1
batch ×1
cluster ×1
group-policy ×1
pipe ×1
print-server ×1
printer ×1
puppet ×1
setuid ×1
shell ×1
startup ×1
stdin ×1
sudo ×1
suid ×1
ubuntu ×1