@for & ever 2009-12-31
參考VMWare的Webservice API的文檔,實現建立ESX|ESXi使用者並給使用者賦予使用者組。
版本: ESX|ESXi 4.0
JAVA代碼如下:
import java.net.URL;</p><p>import com.vmware.vim25.HostAccountSpec;<br />import com.vmware.vim25.ManagedObjectReference;<br />import com.vmware.vim25.Permission;<br />import com.vmware.vim25.ServiceContent;<br />import com.vmware.vim25.VimPortType;<br />import com.vmware.vim25.VimServiceLocator;<br />import com.vmware.security.credstore.*;</p><p>/**<br /> * <p><br /> * 建立ESX or ESXi使用者(非vCenter)<br /> * </p><br /> * @author forandever<br /> * @date 2009-12-31<br /> */<br />public class CreateUser {</p><p>/**<br /> * 建立使用者<br /> * @param hostName 主機IP地址。例如: 202.101.1.121<br /> * @param userName 串連使用者名稱。例如: root<br /> * @param password 串連密碼。例如:123456<br /> * @throws Exception<br /> */<br /> private void createUser(String hostName, String userName, String password) throws Exception {<br /> ServerConn conn = new ServerConn();<br /> conn.prepare(hostName, userName, password);</p><p> ManagedObjectReference hostLocalAccountManager =<br /> conn.get_sic().getAccountManager();</p><p> ManagedObjectReference hostAuthorizationManager =<br /> conn.get_sic().getAuthorizationManager(); </p><p> String new_userName = generateUserName();<br /> String new_password = generatePassword();</p><p> HostAccountSpec hostAccountSpec = new HostAccountSpec();<br /> hostAccountSpec.setId(new_userName);<br /> hostAccountSpec.setPassword(new_password);<br /> hostAccountSpec.setDescription("這是通過API新建立的使用者"); </p><p> conn.get_service().createUser(hostLocalAccountManager,<br /> hostAccountSpec);</p><p> System.out.println(new_userName + " " + new_password);</p><p> ManagedObjectReference rootFolder =<br /> conn.get_sic().getRootFolder();</p><p> // 設定許可權組<br /> Permission per = new Permission();<br /> per.setGroup(false);<br /> per.setPrincipal(new_userName);<br /> per.setRoleId(-1);<br /> per.setPropagate(true);<br /> per.setEntity(rootFolder);<br /> conn.get_service().setEntityPermissions(hostAuthorizationManager,<br /> rootFolder,<br /> new Permission [] {per});</p><p>// CredentialStore csObj = CredentialStoreFactory.getCredentialStore();<br />// csObj.addPassword(getServerName(),userName,password.toCharArray());<br /> System.out.println("新使用者建立成功");<br /> }</p><p> public static void main(String [] args) throws Exception {<br /> CreateUser createUser = new CreateUser();<br /> createUser.createUser("202.101.1.121", "root", "123456");<br /> }<br />}<br />
@forandever 2009-12-31