我有一个简单的脚本(下面),它具有互斥的参数.
./scriptname.sh -m|-d [-n]但是,脚本的参数应该是用户可以运行./scriptname.sh -m -d错误的脚本.
问题:如何强制用户只提供了一个互斥参数?
#!/bin/sh
usage() {
cat <<EOF
Usage: $0 -m|-d [-n]
where:
-m create minimal box
-d create desktop box
-n perform headless build
EOF
exit 0
}
headless=
buildtype=
while getopts 'mdnh' flag; do
case "$flag" in
m) buildtype='minimal' ;;
d) buildtype='desktop' ;;
n) headless=1 ;;
h) usage ;;
\?) usage ;;
*) usage ;;
esac
done
[ -n "$buildtype" ] && usage
Run Code Online (Sandbox Code Playgroud) 我可以pip3 install --user mypackage使用以下命令确定 pip 安装包二进制文件/脚本的位置:
$(python3 -m site --user-base)/bin
Run Code Online (Sandbox Code Playgroud)
是否有一种机制可以确定非用户二进制文件/脚本的安装位置(例如pip3 install mypackage)?
请注意,我只对二进制文件/脚本的安装位置感兴趣,而不是库代码的安装位置感兴趣。
更新:
目标是确保 PATH 环境变量包含安装二进制文件/脚本的文件夹,因为这在过去给我带来了一些问题。
更新2:
$ python3 -c "import sysconfig; print(sysconfig.get_path('scripts'))"
/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/bin
$ python3 -c "from pip._internal.locations import bin_py; print(bin_py)"
/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/bin
Run Code Online (Sandbox Code Playgroud)
但是,pip3 安装到/usr/local/bin
注意:
$ which pip3
/usr/local/bin/pip3
$ which python3
/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud) 我正在设计一个需要身份管理功能的新应用程序(即管理用户帐户和角色).我想将该功能委托给Identity Server.
我确实找到了WSO2 AuthenticationAdmin wsdl https://localhost:9443/services/AuthenticationAdmin?wsdl但没有用户帐户管理功能.
我使用下面给出的Vagrantfile设置为virtualbox配置了vagrant.我可以从主机(HM)连接到虚拟机上运行的Web服务器.
我也可以从网络机器ping服务器,但当我尝试从网络访问Web服务器时,虚拟机(VM)获取请求并说它响应(apache),但网络机器(NM)没有得到回应.
如何配置vagrant或virtualbox从NM访问?我尝试在VM接口文件上将eth1更改为eth0,但它没有用.Vagrant无法放松机器.
提前致谢
Vagrantfile:
config.vm.define "web" do |web|
web.vm.box = "raring"
web.vm.network "public_network", ip: "192.168.0.53", bridge: 'eth0'
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 1024]
end
end
Run Code Online (Sandbox Code Playgroud)
主机界面
eth0 Link encap:Ethernet HWaddr 54:04:a6:68:7d:85
inet addr:192.168.0.102 Bcast:255.255.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:576 Metric:1
RX packets:142100 errors:0 dropped:0 overruns:0 frame:0
TX packets:110704 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:61653460 (61.6 MB) TX bytes:14976111 (14.9 MB)
Interrupt:55 Base address:0xa000
Run Code Online (Sandbox Code Playgroud)
虚拟机界面
eth0 Link encap:Ethernet HWaddr 08:00:27:49:4c:f1
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 …Run Code Online (Sandbox Code Playgroud) def adder(a:Int,b:Int):Int = {a+b}
def doubler(a:Int):Int = {a*2}
def doubleAdd = doubler _ compose adder
Run Code Online (Sandbox Code Playgroud)
我收到错误:找到类型不匹配:(Int,Int)=> Int required:?=> Int
然后,如果我只是尝试doubleAdd = doubler(adder _)我得到相同的错误,除了需要Int而不是?=> Int
有没有办法用两个参数组成一个函数?对不起,如果这是非常基本的,我对这门语言很新,我找不到任何地方有两个参数的例子.
在spark-shell中工作时,我经常想检查RDD(类似于head在unix中使用).
例如:
scala> val readmeFile = sc.textFile("input/tmp/README.md")
scala> // how to inspect the readmeFile?
Run Code Online (Sandbox Code Playgroud)
和......
scala> val linesContainingSpark = readmeFile.filter(line => line.contains("Spark"))
scala> // how to inspect linesContainingSpark?
Run Code Online (Sandbox Code Playgroud) int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
Run Code Online (Sandbox Code Playgroud)
为addr参数传递的实际结构将取决于地址族.sockaddr结构定义为:
struct sockaddr {
sa_family_t sa_family;
char sa_data[14];
}
Run Code Online (Sandbox Code Playgroud)
因此,对于IPv4地址(AF_INET),将传递的实际结构如下:
/* Source http://linux.die.net/man/7/ip */
struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
Run Code Online (Sandbox Code Playgroud)
绑定代码是否读取sockaddr.sa_family值并根据它找到的值,然后将sockaddr结构转换为适当的结构,例如sockaddr_in?
为什么sa_data设置为14个字符?如果我理解正确,那么该sa_data字段只是一个具有足够大的内存空间以适合所有地址族类型的字段?据推测,原始设计师预计14个字符的宽度足以适合所有未来类型.
我使用以下lib连接到云控制器
https://github.com/prosociallearnEU/cf-nodejs-client
const endpoint = "https://api.mycompany.com/";
const username = "myuser";
const password = "mypass";
const CloudController = new (require("cf-client")).CloudController(endpoint);
const UsersUAA = new (require("cf-client")).UsersUAA;
const Apps = new (require("cf-client")).Apps(endpoint);
CloudController.getInfo().then((result) => {
UsersUAA.setEndPoint(result.authorization_endpoint);
return UsersUAA.login(username, password);
}).then((result) => {
Apps.setToken(result);
return Apps.getApps();
}).then((result) => {
console.log(result);
}).catch((reason) => {
console.error("Error: " + reason);
});
Run Code Online (Sandbox Code Playgroud)
我尝试针对我们的API运行它并且它无法工作,我在控制台中没有收到任何错误消息,它可以是什么?
这里处理空间/组织的位置是什么?因为当我从cli连接时它问我要连接哪个空间/组织...
我能够通过CLI登录,只是从代码我不能,任何想法在这里缺少什么?
我运行它时的问题我没有得到任何错误,可以帮助理解什么是根本原因
javascript node.js cloud-foundry pivotal-cloud-foundry ibm-cloud
我在我的Bluemix应用程序中安装sasl时出现以下错误:
Installing collected packages: sasl, thrift-sasl
Running setup.py install for sasl: started
Running setup.py install for sasl: finished with status 'error'
Command "/app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9mi8225r/sasl/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-3l4o04ga-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-9mi8225r/sasl/
running install
running build_py
creating build
creating build/lib.linux-x86_64-3.5
creating build/lib.linux-x86_64-3.5/sasl
copying sasl/__init__.py -> build/lib.linux-x86_64-3.5/sasl
running egg_info
writing dependency_links to sasl.egg-info/dependency_links.txt
writing top-level names to sasl.egg-info/top_level.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file …Run Code Online (Sandbox Code Playgroud) 我看过一个使用 socat 接受 ssl TCP 流量并将流量转发到非 ssl 主机的例子:
socat TCP-LISTEN:443,reuseaddr,fork "^OPENSSL-SERVER,cert=server.pem | TCP:somehost:80"
Run Code Online (Sandbox Code Playgroud)
有可能做相反的事情吗?即我有一个启用了 ssl 的远程主机并且需要一个客户端证书,但我的客户端只能通过非 ssl 连接进行连接。
我了解这种方法的安全含义。