我为我的服务器编写了许多脚本。其中一些在我的~/scripts目录中,其中一些在应用程序目录中。
我只是想知道是否有一个您通常会用来保存 shell 脚本的目录?
我正在尝试使用 powershell 卸载外部 USB 驱动器,但无法成功执行此操作。以下脚本是我使用的:
#get the Win32Volume object representing the volume I wish to eject
$drive = Get-WmiObject Win32_Volume -filter "DriveLetter = 'F:'"
#call dismount on that object there by ejecting drive
$drive.Dismount($Force , $Permanent)
Run Code Online (Sandbox Code Playgroud)
然后我检查我的计算机以检查驱动器是否已卸载,但事实并非如此。
布尔参数 $force 和 $permanent 已尝试使用不同的排列,但无济于事。当参数被切换时,卸载命令返回的退出代码会发生变化。
(0,0) = exit code 0
(0,1) = exit code 2
(1,0) = exit code 0
(1,1) = exit code 2
Run Code Online (Sandbox Code Playgroud)
退出代码 2 的文档表明存在安装点是它无法卸载的原因。虽然我试图卸载存在的唯一挂载点,但我不确定这个退出代码试图告诉我什么。
已经在网上搜索遇到类似问题的人后,我只找到了一个额外的命令可以尝试,如下所示:
# executed after the .Dismount() command
$drive.Put()
Run Code Online (Sandbox Code Playgroud)
这个额外的命令没有帮助。
我没有什么可以尝试的了,所以任何人都可以给我任何帮助将不胜感激。
我在 ubuntu 10 下以远程调试模式设置 Tomcat 变得很疯狂。基本上我将它添加到 /etc/init.d/tomcat6(在开始时):
JAVA_OPTS="-Djava.awt.headless=true -Xmx256M -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Run Code Online (Sandbox Code Playgroud)
但我看不到任何效果......实际上我看不到端口 8000 用 netstat -a 打开,Eclipse 远程调试器说它无法连接。如果我做 ps -A u| 我得到的 grep java:
tomcat6 9612 3.1 13.1 470560 154168 ? Sl 15:24 0:17 /usr/lib/jvm/java-6-sun/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath /usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tmp org.apache.catalina.startup.Bootstrap start
Run Code Online (Sandbox Code Playgroud)
请注意,它甚至没有设置堆大小(如果这有意义的话)。
所以有什么提示吗?
有没有办法在 Windows 高级防火墙中的规则中创建组或添加到现有组(最好通过命令提示符或 WSH 脚本)。
编辑:

CentOS
有没有一种简单的方法可以从数据流中转换 HTML 特殊实体?我将数据传递给 bash 脚本,有时该数据包含特殊实体。例如:
“测试”& 测试 $ 测试!测试@#$%^& *
我不确定为什么有些字符显示正常而其他字符显示不正常,但不幸的是,我无法控制传入的数据。
我想我可以在这里使用 SED,但这似乎很麻烦,并且可能容易出现误报。是否有我可以通过管道传输的 Linux 命令专门用于解码此类数据?
我在bashDebian 6.0.6 机器上编写 gpg 脚本时遇到了一些问题。我有一个执行批量操作的脚本,并希望在尝试继续之前确保 gpg-agent 可用。
由于 gpg-agent 在已经运行时启动,将不采取任何行动并返回成功,因此确保代理存在非常简单:
eval $(gpg-agent --daemon)
Run Code Online (Sandbox Code Playgroud)
gpg-agent 开始,或将报告:
gpg-agent[21927]: a gpg-agent is already running - not starting a new one
Run Code Online (Sandbox Code Playgroud)
如果已经运行,则返回 0(成功)。
当代理已经在另一个会话中运行时,就会出现问题。gpg-agent说它已经在运行......但gpg它自己然后声称它不可用。
$ gpg-agent --version
gpg-agent (GnuPG) 2.0.19
libgcrypt 1.5.0
$ gpg --version
gpg (GnuPG) 1.4.13
$ eval $(gpg-agent --daemon)
gpg-agent[21927]: a gpg-agent is already running - not starting a new one
$ gpg -d demo-file.asc
gpg: gpg-agent is not available in this session
Run Code Online (Sandbox Code Playgroud)
这让我感到沮丧和困惑。似乎gpg-agent …
我想创建一个脚本来在网络连接发生变化时做各种事情。例如,如果机器连接到我的办公网络,我可能希望它:
然后,当机器脱离办公网络时,它可能会恢复其中的一些。
据推测,“活动网络”将基于 IP 地址/网关范围或 WIFI 网络名称等。
你有什么推荐的工具来完成这个吗?我可以看到这样的事情适用于许多 IT 专业人士,所以我相信那里有一些很好的技巧。
请注意,这需要在网络发生变化时起作用——而不仅仅是在用户登录/注销时。
在 Linux 中可以使用什么命令来查找 eth0 的网关 IP 地址(即家庭路由器地址)?
我需要从命令行应用程序获取 IP 地址以在 shell 脚本中使用。
我编写了一个 php 脚本来检查文件夹中是否有任何新文件,如果存在任何新文件,请将它们上传到服务器。这些文件可能非常大。我想经常运行这个脚本 - 假设每 5 分钟 - 作为计划任务,以便文件尽快移动到服务器。但是,一旦脚本已经尝试上传文件,我不希望它再次运行,因为我担心第二个实例会覆盖已经上传到服务器的文件。
除非脚本已在运行,否则如何将脚本作为计划任务运行?
我有一个脚本,如果文件存在与否,我想显示不同的消息。我有一个像这样的脚本:
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 语句中使用它来显示不同的消息?
scripting ×10
windows ×3
bash ×2
linux ×2
shell ×2
windows-xp ×2
aix ×1
firewall ×1
gateway ×1
gpg ×1
hard-drive ×1
html ×1
networking ×1
powershell ×1
scheduling ×1
sed ×1
tcpip ×1
tomcat6 ×1
ubuntu ×1
unix ×1
usb ×1