diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfConfigGetCommand.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfConfigGetCommand.java
new file mode 100644
index 0000000..fd5a04c
--- /dev/null
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/cli/impl/NetconfConfigGetCommand.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.netconf.cli.impl;
+
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.behaviour.ConfigGetter;
+import org.onosproject.net.driver.DriverHandler;
+import org.onosproject.net.driver.DriverService;
+
+/**
+ * Command that gets the configuration of the specified type from the specified
+ * device. If configuration cannot be retrieved it prints an error string.
+ *
+ * This is a temporary development tool for use until yang integration is complete.
+ * This uses a not properly specified behavior. DO NOT USE AS AN EXAMPLE.
+ */
+
+//FIXME Remove dependency to ConfigGetter.
+
+@Command(scope = "onos", name = "netconf-get-config",
+        description = "Gets the configuration of the specified type from the" +
+                "specified device.")
+public class NetconfConfigGetCommand extends AbstractShellCommand {
+
+    @Argument(index = 0, name = "uri", description = "Device ID",
+            required = true, multiValued = false)
+    String uri = null;
+
+    @Argument(index = 1, name = "cfgType",
+              description = "Configuration datastore name (RUNNING, etc.)",
+              required = true, multiValued = false)
+    String cfgType = null;
+
+
+    private DeviceId deviceId;
+
+    @Override
+    protected void execute() {
+        DriverService service = get(DriverService.class);
+        deviceId = DeviceId.deviceId(uri);
+        DriverHandler h = service.createHandler(deviceId);
+        ConfigGetter config = h.behaviour(ConfigGetter.class);
+        print(config.getConfiguration(cfgType));
+    }
+
+}
