标签: scripting

Windows telnet 客户端可以编写脚本吗?

是否可以使用 Windows Telnet 客户端在脚本中运行一系列命令?

如果没有,是否有任何替代方案?

scripting windows telnet

8
推荐指数
2
解决办法
3万
查看次数

如何在 Cacti 中调试数据输入法脚本?

(见底部更新...)

我已经为 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 …

scripting cacti

8
推荐指数
1
解决办法
9947
查看次数

让 shell 脚本在 CentOS 上作为守护进程运行?

编辑:由于某种原因,我的帖子的一半被截断了,不知道发生了什么。我会尽快更新,并将在顶部发布它已更新。

编辑:我再次更新了帖子,对于不完整的问题很抱歉。

编辑(东部标准时间 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)

scripting startup shell centos init.d

8
推荐指数
1
解决办法
2万
查看次数

是否可以从 Linux 在 Windows 服务器上运行命令?

我想从 linux 恢复远程 Windows 服务器上的 sqlserver db 备份。我厌倦了“net rpc”,但没有什么可以在远程服务器上执行命令或脚本。

remote-access scripting linux windows bash

8
推荐指数
2
解决办法
2万
查看次数

如果指令在 apache VirtualHost conf 中不起作用,则显示“无效命令”

为什么??

<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)

scripting httpd.conf redirect virtualhost apache-2.2

8
推荐指数
1
解决办法
1万
查看次数

在 PowerShell 脚本中使用 Diskpart 将不允许脚本重复使用驱动器号

我构建了一个脚本,该脚本使用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)

scripting windows powershell vhd diskpart

8
推荐指数
1
解决办法
1358
查看次数

是否可以使用 Puppet 来确保目录中存在多个文件而不定义所有文件?

我有几百个一次性服务器,它们具有需要存在于目录中的不同配置文件。文件的副本驻留在木偶主人上。

在我的一个类中,我有一组默认的配置,这些配置总是被推送到节点,如下所示:

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 不是很熟悉,但我觉得没有办法做到这一点。

scripting puppet

8
推荐指数
1
解决办法
3万
查看次数

PowerShell:使用 åäö 获取 ADUser 属性

我正在尝试使用 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)

scripting powershell active-directory

8
推荐指数
1
解决办法
5747
查看次数

在脚本中输入本地管理员用户名和密码

我的网络上有很多客户端,我希望我的脚本执行以下操作:

[1] 使用本地管理员详细信息打开提升的命令提示符。注意:我不想为每个用户输入用户名和密码。

[2] 使用以下命令卸载java:"wmic product where "name like 'java%'" call uninstall"

[3] 然后我想在 PC 重新启动后安装另一个版本的 Java。

目前我不太担心第 2 步和第 3 步,但是第 1 步给我带来了一些问题。我尝试了以下方法:

runas 命令
NirSoft 程序
PowerShell

我真的只是想知道这是否可行,而无需访问网络上的每台 PC 并输入本地管理员密码。

/sf/ask/1336867101/

提前致谢。廷博

automation scripting windows uac windows-command-prompt

8
推荐指数
1
解决办法
679
查看次数

用于检索以太网接口名称的 Bash 脚本

在 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)

networking scripting ubuntu bash linux-networking

8
推荐指数
3
解决办法
2万
查看次数