【问题标题】:Custom command line utility. How?自定义命令行实用程序。如何?
【发布时间】:2010-11-06 08:33:33
【问题描述】:

最近,我发布了一个开源类——API 函数的包装器,可从领先的 SMS 网关之一获得,它提供 HTTP-API 访问以发送 SMS 消息。

现在我想制作一个自定义命令行实用程序,它可以在命令行中的任何位置供用户使用,因此他只需运行如下控制台命令即可发送短信:

$ my_custom_send_sms_command -u your_username -p your_password -k your_api_key 447771234567 'Hello from CLI'

请解释一下如何做到这一点?

更新:

类是用 PHP 编写的。

【问题讨论】:

  • 我认为你最好提供更多的约束:你的类可以从例如访问吗? C,来自 shell,来自 Ruby,...
  • 你到底错过了什么?你不知道如何解析命令行选项或创建控制台应用程序或什么?!
  • 小心提供这样的密码 - 如果你这样做了,那么系统上的任何用户都可以读取密码。 (如果可用,使用 'ps aux' 或 /proc)。最好在只有该用户可读的文件中提供用户名/密码配置,并将文件作为参数传递。

标签: api unix command-line sms


【解决方案1】:

确保您已安装 PHP CLI 软件包。在我的 Ubuntu VPS 上,我必须运行:

$ apt-get install php5-cli

检查是否已安装:

$ /usr/bin/php -v

然后,创建一个类似sendsms.php 的文件,其内容类似于:

#!/usr/bin/php -q
<?php

  // command line parameters are in the format:
  //     key1 value1 .. keyN valueN number message

  $username = "";
  $password = "";
  $apikey = "";

  // process pairs of arguments up to the last two    
  for ($x = 0; $x < ($argc - 3); $x++)
  {
    if ($argv[$x] == "-u") $username = $argv[$x + 1];
    if ($argv[$x] == "-p") $password = $argv[$x + 1];
    if ($argv[$x] == "-k") $apikey = $argv[$x + 1];
  }
  $number = $argv[$argc - 2];
  $message = $argv[$argc - 1];

  // To do: call the SMS API
  // For now just output the info   
  echo("Username = " . $username . "\r\n");
  echo("Password = " . $password . "\r\n");
  echo("API key = " . $apikey . "\r\n");
  echo("Number = " . $number . "\r\n");
  echo("Message = " . $message . "\r\n");
?>

确保文件具有执行权限:

chmod 755 sendsms.php

然后像这样从当前文件夹运行它:

$ ./sendsms.php -u your_username -p your_password -k your_api_key 447771234567 'Hello from CLI'

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2012-03-16
    • 2012-12-20
    相关资源
    最近更新 更多