是否可以使用 Windows Telnet 客户端在脚本中运行一系列命令?
如果没有,是否有任何替代方案?
(见底部更新...)
我已经为 Cacti 编写了一个数据输入方法脚本(在 Ruby 中,用于从 beanstalkd 收集统计信息)并且它在作为 cacti 用户帐户运行时从命令行工作(返回一个简单的整数,如文档所述),但是Cacti 工具本身没有收集任何数据,日志中也没有任何内容。
这是数据输入法设置: Cacti 数据输入法 http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg
这是生成的图表(在将其添加到主机的图表模板并运行足够长的时间以收集数据之后): Cacti Graph http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg
更新 #1:看起来 Cacti 可能正在剥离环境:
sudo su - cacti -c 'env -i /script/beanstat --host 10.11.12.13 --port 11300 --stat current-waiting'
/script/beanstat:4:in `require': 没有要加载的文件——rubygems (LoadError)
来自 /script/beanstat:4
如果是这种情况,我该如何解决?
更新 #2:stackoverflow.com 上的这个响应似乎已经解决了环境问题,但图表中仍然没有数据。
更新 #3:感谢@Heath 的建议,我提高了轮询器日志记录级别并发现了这一点:
警告:来自 CMD 的结果无效。部分结果:U
谷歌搜索“部分结果:U”的意思没有任何运气。该脚本只打印一个整数值。
更新 #4:我终于开始工作了。核心问题是shell脚本运行时缺少环境。我必须通过在我的 Ruby 脚本前加上以下几行来解决这个问题:
#!/bin/sh PATH=/usr/local/bin:$PATH exec ruby -x"/full/path/to/script/directory" $0 "$@" #!/usr/bin/env ruby
第二个问题是数据输入方法的正确配置(我想收集的每个单独的指标一个,即使它们都使用相同的脚本),它提供数据模板的数据源(反之亦然,我我仍然不清楚)它提供了需要分配给设备的图形模板,然后添加到图形树中。总而言之,这是一个关于文档废话的重大失败,我希望永远不必再这样做了。
更新 #5 …
编辑:由于某种原因,我的帖子的一半被截断了,不知道发生了什么。我会尽快更新,并将在顶部发布它已更新。
编辑:我再次更新了帖子,对于不完整的问题很抱歉。
编辑(东部标准时间 10/10/2011 晚上 8:55):我像史蒂文建议的那样更新了 /srv/rhodecode/start.sh,但仍然不高兴。它继续像这样挂起:
[lpeabody@vcs rhodecode]$ sudo /etc/init.d/rhodecode-server start
Starting rhodecode-server:
Run Code Online (Sandbox Code Playgroud)
我已经更新了下面的脚本以显示更改。
我一生中从未编写过 shell 或 bash 脚本。我正在尝试在 CentOS 上安装 RhodeCode,并且有适用于 Debian 和 Gentoo 的初始化脚本,但不适用于 RedHat/CentOS,这对我来说很疯狂。所以我需要写一个,因为我们的服务器环境仅限于运行 CentOS 5。该项目的源代码可以在这里的Bitbucket找到。
这个想法是用 Celery 和 RabbitMQ 运行 RhodeCode。它都是用 Python 编写的,我使用 virtualenv 在它自己的单独虚拟容器中拥有环境。我在这里得到了 shell 脚本的想法。
我创建了一个名为 rhodecode 的系统用户,并创建了目录 /var/run/rhodecode 并且它归 rhodecode 所有。我还创建了生产.ini 所在的/var/www/rhodecode 以及/srv/rhodecode/start.sh,所有这些都归rhodecode 所有。
权限:
[lpeabody@vcs run]$ ll -a /var/run/rhodecode
total 12
drwxr-xr-x 2 rhodecode rhodecode 4096 Oct 10 15:57 .
drwxr-xr-x 21 root root 4096 …Run Code Online (Sandbox Code Playgroud) 我想从 linux 恢复远程 Windows 服务器上的 sqlserver db 备份。我厌倦了“net rpc”,但没有什么可以在远程服务器上执行命令或脚本。
为什么??
<VirtualHost *:80>
ServerAdmin admin@mydomain.com
DirectoryIndex index.php
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect / https://www.mydomain.com:443/
</If>
.....
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
保存,然后重启:
sudo /etc/init.d/apache2 restart
Syntax error on line 4 of /etc/apache2/sites-enabled/000-default:
Invalid command '<If', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
Run Code Online (Sandbox Code Playgroud) 我构建了一个脚本,该脚本使用Diskpart挂载(附加)VHD,清除一些系统文件,然后卸载(分离)它。它使用 foreach 循环,并假设使用相同的驱动器号清理多个 VHD。但是,在第一个 VHD 之后它失败了。我还注意到,当我尝试使用 diskpart 手动附加 VHD 时,diskpart 成功,磁盘管理器显示具有正确驱动器号的磁盘,但在同一个 PoSH 实例中,我无法连接(设置位置)到该驱动器。如果我在第一次打开 PoSH 时执行手动磁盘部分,我可以附加和分离我想要的所有内容,并且每次都能获得驱动器号。我需要做些什么来重置脚本中的 diskpart 吗?这是我正在使用的脚本片段。
function Mount-VHD {
[CmdletBinding()]
param (
[Parameter(Position=0,Mandatory=$true,ValueFromPipeline=$false)]
[string]$Path,
[Parameter(Position=1,Mandatory=$false,ValueFromPipeline=$false)]
[string]$DL,
[string]$DiskpartScript = "$env:SystemDrive\DiskpartScript.txt",
[switch]$Rescan
)
begin {
function InvokeDiskpart {
Diskpart.exe /s $DiskpartScript
}
## Validate Operating System Version ##
if (Get-WmiObject win32_OperatingSystem -Filter "Version < '6.1'") {throw "The script operation requires at least Windows 7 or Windows Server 2008 R2."}
}
process{
## Diskpart Script Content ## Here-String …Run Code Online (Sandbox Code Playgroud) 我有几百个一次性服务器,它们具有需要存在于目录中的不同配置文件。文件的副本驻留在木偶主人上。
在我的一个类中,我有一组默认的配置,这些配置总是被推送到节点,如下所示:
file { "/etc/someprogram/config/000-default":
ensure => "present",
owner => "root",
group => "root",
mode => 0764,
source => "puppet:///modules/someprogram/000-default",
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
$filearray = directory listing of /etc/puppet/modules/someprogram/files/$fqdn
with each file as an element into array
$filearray.each(
file { "/etc/someprogram/config/$filename":
ensure => "present",
owner => "root",
group => "root",
mode => 0764,
source => "puppet:///modules/someprogram/files/$fqdn/$filename",
}
)
Run Code Online (Sandbox Code Playgroud)
我对 puppet 不是很熟悉,但我觉得没有办法做到这一点。
我正在尝试使用 Get-ADUser 提取选定的用户集。用户属于名称包含非 ASCII 字符的公司,例如“Gåäördet”。不幸的是,我们必须使用 company 属性来完成这个任务,我们还需要它从脚本中工作。
以下在交互式会话中效果很好,但在脚本中执行时不返回任何数据:
$Company = "Gåäördet"
Get-ADUser -Filter "company -eq '$Company'"
Run Code Online (Sandbox Code Playgroud)
我找到了工作但不够可靠的解决方法(有选择错误对象的风险):
# Work-around 1:
$Company = "Gaaordet" # Replace åäö with aao in the variable
Get-ADUser -Filter "company -eq '$Company'" # Matches the company "Gåäördet", but why?
Run Code Online (Sandbox Code Playgroud)
...或者...
# Work-around 2:
$Company = "G...rdets" # Use regex for åäö
Get-ADUser -Filter * -Properties Company | ? Company -match "$Company"
Run Code Online (Sandbox Code Playgroud)
附加说明:字符编码可能不是这里的问题。正如评论中所建议的,我将其放在脚本中。阅读每个 Get-ADUser-line 的注释:
$OutputEncoding = [Console]::OutputEncoding
$Company = "aao"
Get-ADUser -Filter "company -eq '$Company'" # …Run Code Online (Sandbox Code Playgroud) 我的网络上有很多客户端,我希望我的脚本执行以下操作:
[1] 使用本地管理员详细信息打开提升的命令提示符。注意:我不想为每个用户输入用户名和密码。
[2] 使用以下命令卸载java:"wmic product where "name like 'java%'" call uninstall"
[3] 然后我想在 PC 重新启动后安装另一个版本的 Java。
目前我不太担心第 2 步和第 3 步,但是第 1 步给我带来了一些问题。我尝试了以下方法:
runas 命令
NirSoft 程序
PowerShell
我真的只是想知道这是否可行,而无需访问网络上的每台 PC 并输入本地管理员密码。
提前致谢。廷博
在 Ubuntu 16.04 中,我编写了一个脚本来根据某些参数动态配置有线以太网接口的 IP 地址。现在的问题是,在我的脚本中,我假设名称是 eth0,但这并不总是正确的。检索它的名字(只是有线的)?
使用ifconfig命令我得到:
enp7s0 Link encap:Ethernet HWaddr fc:3f:db:a2:6d:46
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::149f:3103:af2f:1ec5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6784 errors:0 dropped:0 overruns:0 frame:0
TX packets:7493 errors:1 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4565079 (4.5 MB) TX bytes:827825 (827.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:8037 errors:0 dropped:0 overruns:0 frame:0
TX packets:8037 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 …Run Code Online (Sandbox Code Playgroud) scripting ×10
windows ×4
bash ×2
powershell ×2
apache-2.2 ×1
automation ×1
cacti ×1
centos ×1
diskpart ×1
httpd.conf ×1
init.d ×1
linux ×1
networking ×1
puppet ×1
redirect ×1
shell ×1
startup ×1
telnet ×1
uac ×1
ubuntu ×1
vhd ×1
virtualhost ×1