我正在一家软件公司实习,但我遇到了一些困难。这是交易:
问题:我们这里有一些盒子被错误地分区为 2 x 500 GB 驱动器。实际驱动器是 2 x 1 TB 驱动器。这些基本上是只使用了一半可用磁盘空间的机器。我的任务是编写一个脚本来重新分区这些驱动器。
迄今为止的解决方案:我有一个脚本可以禁用所有进程并重新启动,然后是另一个修复分区的脚本。问题是数据丢失。
我在寻找什么:我需要一个解决方案来执行此操作但保存所有数据。我的第一个虽然是将分区增加到适当的大小,但我不确定这是否可行。另一种解决方案是将所有数据复制到 Disk2 上,对 Disk1 进行分区,然后将数据移回 Disk1,最后对 Disk2 进行分区。问题是我对 Linux 还很陌生,我真的不知道该怎么做。我可以访问 fdisk 实用程序和 parted 实用程序。
它们都是 ext3 类型。
编辑:11/3/11
好的。所以我在两个磁盘上都有大约 1GB 未使用的未分配空间。我想做如下:
我需要将DNS 服务器配置的Internet 协议版本 4 (TCP/IPv4)和Internet 协议版本 6 (TCP/IPv6)设置从“自动获取 DNS 服务器地址”切换到硬编码值(对于 Google 的 DNS 服务器)并返回。手动执行有点麻烦(我需要转到Control Panel-Network 和 Internet-Network Connections,打开Wireless Network Connection 2,然后打开相应版本的Properties,输入 DNS 服务器值,然后重复另一个)。是否有可以自动化该过程的实用程序或脚本?谢谢。
我们的其中一台 Windows 服务器上有一些用户文件夹,但权限却很糟糕。我想要它SYSTEM并Domain Admins完全控制所有文件夹。我希望用户只读取顶级文件夹(这是他们的主文件夹)并修改所有子文件夹和文件。这可以通过 GUI 轻松完成,但我不知道如何编写脚本。
我从我的 PowerShell 脚本调用 icacls,因为 get-acl 和 set-acl 是主要的 PITA。如果我必须使用它们,我并不反对,但我想调用 icacls 会更容易。这是我必须到目前为止的相关代码:
icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'
icacls.exe $folder /grant 'SYSTEM:(OI)(CI)(F)'
icacls.exe $folder /grant '$domain\domain admins:(OI)(CI)(F)'
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'. 我无法弄清楚如何使修改仅适用于子文件夹和文件,同时将只读授予顶级文件夹。
所需的权限结构如下所示(只是为了清楚起见):
-Users
--M
---Marra (read only to me)
----Documents (Modify)
----Scripts(Modify)
----Etc (Modify)
Run Code Online (Sandbox Code Playgroud)
什么是正确的 icacls 语法,或者我如何使用 set-acl 在 PS 中进行本机操作?
我编写了一个小批处理文件来帮助我们进行服务器迁移以使用 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参数,否则这根本不是问题
所以我在我的存储服务器上使用这些命令来清理一些垃圾,但它不会产生任何输出或结果。我在网上找到了语法,只是修改了我需要的文件。我还需要添加什么才能查看最后实际删除或总计的内容?最终这将是一个自动运行的脚本,但现在我正在手动运行命令。提前致谢!
find . -name .DS_Store -printf \"%p\"\ \ | xargs rm
find . -name ._.DS_Store -printf \"%p\"\ \ | xargs rm
find . -name Thumbs.db -printf \"%p\"\ \ | xargs rm
find . -name ._Thumbs.db -printf \"%p\"\ \ | xargs rm
Run Code Online (Sandbox Code Playgroud) 有安全意识的人通常建议在 Linux 机器上以 root 身份禁用 ssh。我的问题是这样的:
假设您通常编写大量脚本,这些脚本通过 ssh 连接到大量 Linux 机器并执行各种根级任务。如果您以 root 身份禁用 ssh,您如何进行需要 root 权限的日常维护?
当然, sudo 是一个选项,但是每次运行命令时都必须输入密码。如果您的脚本执行各种任务怎么办?如果您必须针对大量主机运行该脚本怎么办?
当然,您可以设置NOPASSWD 参数,但这不是存在安全风险吗?
只是在这里沉思。想得到社区的反馈。我正在寻找一种相对安全的方式来 ssh 到 Linux 机器并执行根级任务。
很容易,我正在编写一个脚本,它需要一些浮点后有 2 位数字的值。尝试使用bc我不明白如何使用“比例”,即
A=12 ; bc <<< $(($A/5))
Run Code Online (Sandbox Code Playgroud)
这是正确的,但添加“比例”会导致错误:
A=12 ; bc <<< 'scale=2;$(($A/5))'
(standard_in) 1: illegal character: $
(standard_in) 1: illegal character: $
Run Code Online (Sandbox Code Playgroud) 我想使用这个Powershell 脚本在 Win7 机器上自动进行一些备份。当从 Powershell 终端手动运行时,脚本按广告运行并在几秒钟后结束(这是一个小备份)。
问题是当我尝试使用任务计划程序自动化该过程时。时机成熟时(或当我手动运行任务时),脚本会运行并正确执行备份。但它并没有回到“就绪”状态,即使我知道它已经结束了。我每次都必须手动停止任务。
现在,我还没有等到任务再次运行时会发生什么,但我认为它不会第二次启动,因为它没有“准备好”。
我该怎么办?
更新1:
我选择的操作是“启动程序”。在“程序/脚本”框中,我有“powershell.exe”,作为参数,我有脚本“*.ps1”文件的路径。
更新1:
我注意到虽然任务没有返回“就绪”,但如果我手动启动它,它会再次运行。