如何更改用户';ColdFusion rsh命令中的主unix组?

如何更改用户';ColdFusion rsh命令中的主unix组?,unix,coldfusion,clearcase,rsh,Unix,Coldfusion,Clearcase,Rsh,我们使用rsh命令将文件签入ClearCase: <cfexecute name="C:\cygwin64\bin\rsh.exe" arguments="-n -l #USERNAME# #SERVER# ""cleartool setview -exec '#KSH_FILE# -user #USERNAME# -dir #VOB_DIRECTORY#' #CLEARCASE_VIEW#"" " timeout="180" variable="CHECKIN_F

我们使用rsh命令将文件签入ClearCase:

<cfexecute name="C:\cygwin64\bin\rsh.exe"
    arguments="-n -l #USERNAME# #SERVER# ""cleartool setview -exec '#KSH_FILE# -user #USERNAME# -dir #VOB_DIRECTORY#' #CLEARCASE_VIEW#"" "
    timeout="180"
    variable="CHECKIN_FILE_CONTENT">
</cfexecute>
但它一直在计时。。没有错误,只是旋转和停止

---更新--- 经过进一步测试,cfexcute和rsh似乎不允许使用多个命令。下面是我尝试的一个样本测试,产生了相同的问题:

<cfexecute name="C:\cygwin64\bin\rsh.exe"
    arguments="-n -l #USERNAME# #SERVER# ""newgrp #GROUP#; id -a > results.txt"" "
    timeout="180">
</cfexecute>

不要使用(as):这就是为什么newgrp和setview不能很好地通信的原因:它们触发自己的shell


如果需要使用动态视图执行任何操作,请使用其完整路径(
/view//vobs/
),不要使用
setview
。这样,如果需要,您可以使用
newgrp

我最终创建了一个
launchcheckin.ksh
脚本来更改shell中的用户组。我只是将我想要执行的命令作为参数传递给脚本,更改脚本中的组并在newgrp流中执行命令!我们已经顺利生产了6个月

启动checkin.ksh

FILE="$1"
GROUP="$2"
COUNT=1
for argument in $*
  do
    if [ ${COUNT} -gt 2 ]
      then
        ARGUMENTS="${ARGUMENTS} ${argument}"
      fi
    ((COUNT+=1))
done

newgrp ${GROUP} << EOF
${FILE} ${ARGUMENTS}
EOF
FILE=“$1”
GROUP=“$2”
计数=1
辩论$*
做
如果[${COUNT}-gt 2]
然后
ARGUMENTS=“${ARGUMENTS}${argument}”
fi
((计数+=1))
完成

NeGRP${GROU}} VonC,谢谢你,我没想到命令会在不同的shell中执行。你有一个我可以用来代替setview的示例命令吗?@Klog只需使用你想要的命令,但在动态视图的完整路径中:
/view/myView/vobs/myvob/…
(而不是
/vobs/myvob
,由
setview
命令设置)在与我们的ClearCase专家交谈后,这个解决方案对我们不起作用。@Klog OK。提到的原因有哪些?对不起,他们没有告诉我任何细节:/我目前正在使用的解决方案将newgrp命令添加到“#KSH_文件”中。如果有人对为什么一个cfexecute命令中不能执行多个命令有更多的建议,我很乐意听到。很好的反馈,比我的答案更精确+1感谢您回来并更新+1.
FILE="$1"
GROUP="$2"
COUNT=1
for argument in $*
  do
    if [ ${COUNT} -gt 2 ]
      then
        ARGUMENTS="${ARGUMENTS} ${argument}"
      fi
    ((COUNT+=1))
done

newgrp ${GROUP} << EOF
${FILE} ${ARGUMENTS}
EOF
<cfexecute name="C:\cygwin64\bin\rsh.exe"
    arguments="-n -l #USERNAME# #SERVER# ""cleartool setview -exec '/launchcheckin.ksh #KSH_FILE# #GROUP# #ARGUMENTS#' #CLEARCASE_VIEW#"" "
    timeout="180"
    variable="CHECKIN_FILE_CONTENT">
</cfexecute>